selenium python send_key error: list object has no attribute

selenium python send_key error: list object has no attribute

你好,

我的 xpath 确实在 firePath 中进行了验证,但是当我尝试发送 _key 时出现错误。

userID = driver.find_elements_by_xpath(".//*[@id='UserName']")

userID.send_keys('username')

AttributeError: 'list' object has no attribute 'send_keys'

有人可以给我一根骨头吗?

您将获得一个 List 的 webElements,其中 driver.find_elements_by_xpath(".//*[@id='UserName']") 当然不是单个元素,也没有 send_keys() 方法。使用 find_element_by_xpath 代替。请参阅 this api 文档。

userID = driver.find_element_by_xpath(".//*[@id='UserName']")

userID.send_keys('username')

当试图对列表而不是元素执行操作时会发生此错误。当我尝试单击按钮提交凭据时,我遇到了类似的错误。我通过模拟按键盘上的回车键找到了解决方法。例如使用 xpath/css 等查找页面上的任何元素并发送回车键。
driver.find_element_by_id('test_id').send_keys(Keys.ENTER)

我遇到了同样的问题 - 所以我就这样做了:

userID[0].send_keys('username')

为我工作

而不是这个:

userID = driver.find_elements_by_xpath(".//*[@id='UserName']")

userID.send_keys('username')

尝试:

userID = driver.find_element_by_xpath(".//*[@id='UserName']")

userID.send_keys('username')

我遇到了同样的问题,这对我有用。

driver.find_element_by_xpath(".//*[@id='UserName']").send_keys('username')

find_element 没有 s.

请将您的代码替换为以下代码,因为您喜欢处理列表的第一个部分,而不是整个列表。

userID = driver.find_elements_by_ID('username')[0]

userID.send_keys('username')

或从 find_elements_by_ID 中删除 "s",例如:

userID = driver.find_element_by_ID('username')

userID.send_keys('username')

我在使用 Instagram 输入时遇到了同样的问题,尝试让时间模块休眠 2 秒,然后它开始为我工作。问题是在加载网站之前,机器人开始查找该路径并报告错误。

import time
time.sleep(2)

当我们 select 多个元素时,我们键入 elements (s),其 return 一个 list。没有“send_keys”的单个 元素没有 s。有“send_keys”