[英]Selenium webdriver python can't upload file - send_keys is throws ElementNotInteractable
[英]Can't send keys selenium webdriver python
尝试执行简单的测试
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
driver.get('http://google.com')
driver.find_element_by_name('q')
driver.send_keys('hey')
并得到错误
Traceback (most recent call last):
File "C:/webdriver/test.py", line 8, in <module>
driver.send_keys('hey')
AttributeError: 'WebDriver' object has no attribute 'send_keys'
有什么问题?
WebDriver
实例没有send_keys()
方法。 这就是错误的实际含义:
'WebDriver' 对象没有属性 'send_keys'
在由find_element_by_*()
方法返回的WebElement
实例上调用send_keys()
- 在您的情况下为find_element_by_name()
:
element = driver.find_element_by_name('q')
element.send_keys("hey")
仅供参考,还有一个ActionChains
类,它有助于构建动作链或应用更复杂的动作,如拖放或鼠标移动。 在这种情况下,这是一个开销,但仅举个例子:
from selenium.webdriver.common.action_chains import ActionChains
actions = ActionChains(driver)
actions.move_to_element(element).send_keys("hey").perform()
您必须更改参考元素
driver.get('http://google.com')
elem.find_element_by_name('q')
elem.send_keys('hey')
您是否尝试更改参考元素。 如果您使用不同的引用调用 webdriver,这将是一个很好的做法。 更改参考后的代码。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Firefox()
driver.get('http://google.com')
#Firefox Webdriver is created and navigated to google.
elem = driver.find_element_by_name('q')
elem.send_keys('hey',Keys.RETURN)
#Keys.RETURN = Pressing Enter key on keyboard
time.sleep(5)
driver.close()
我遇到了同样的问题,但我得到了解决方案。
使用move_to_element
在ActionChains
。
查找元素。 elem = driver.find_element_by_*
创建您的actions = ActionChains(driver)
链驱动程序actions = ActionChains(driver)
ActionChains actions = ActionChains(driver)
使用 move to 命令,因此webdriver将指向该元素的位置,但在发送密钥之前,您需要使用click()
函数在该元素上设置webdriver位置。 现在, webdriver有一个表面区域来放置给定的键(数据) ,为此您将使用send_keys()
函数。 在最后只是放置perform()
函数来非常顺利地执行这些所有任务。 actions.move_to_element(<ELEMENT>).click().send_keys(<DATA>).perform()
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
driver.get('http://google.com')
elem = driver.find_element_by_name('q')
actions = ActionChains(driver)
actions.move_to_element(elem).click().send_keys('hey').perform()
The problem with your code is you have not tell driver where to send the keys
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
driver.get('http://google.com')
driver.find_element_by_name('q')
driver.send_keys('hey') // driver dont know where to send the keys
correct code would be :
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
driver.get('http://google.com')
goog = driver.find_element_by_name('q') // you have stored element in goog variable
goog.send_keys('hey') // you told variable to send hey
or
you can directly send after finding the element like :
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
driver.get('http://google.com')
driver.find_element_by_name('q').send_keys('hey')
If it helps so please accept the answer !!
它与导致问题的硒版本。 我遇到了同样的问题。
它与具有兼容性问题的硒版本 3.3.3。
尝试: pip 卸载硒 pip install selenium==3.3.1
希望它有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.