尝试执行简单测试
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'
有什么问题?
答案 0 :(得分:3)
WebDriver
实例没有send_keys()
方法。这就是错误的实际意义:
'WebDriver'对象没有属性'send_keys'
在您send_keys()
方法返回的WebElement
个实例上调用find_element_by_*()
:
find_element_by_name()
仅仅是FYI,还有一个ActionChains
class可用于构建动作链或应用更复杂的动作,如拖放或鼠标移动。在这种情况下,这是一个开销,但仅仅是为了一个例子:
element = driver.find_element_by_name('q')
element.send_keys("hey")
答案 1 :(得分:0)
您必须更改参考元素
driver.get('http://google.com')
elem.find_element_by_name('q')
elem.send_keys('hey')
答案 2 :(得分:0)
您是否尝试更改参考元素? 如果您使用不同的引用调用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()
答案 3 :(得分:0)
我遇到了同样的问题,但我得到了解决方案。
在 move_to_element
中使用 ActionChains
。
查找元素。 elem = driver.find_element_by_*
创建您的操作链驱动程序 actions = ActionChains(driver)
使用move to命令,所以webdriver会指向到那个元素的位置,但是在你发送key之前,你需要set > webdriver 使用 click()
函数在该元素上定位。现在,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()
答案 4 :(得分:0)
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 !!
答案 5 :(得分:-1)
它与导致问题的硒版本有关。我遇到了同样的问题。
它与硒版本3.3.3有兼容性问题。
尝试: pip卸载硒 pip install selenium == 3.3.1
希望它有效。