TypeError:“FirefoxWebElement”类型的对象在使用 Selenium Python 通过 send_keys 发送文本时没有 len() 错误
Posted
技术标签:
【中文标题】TypeError:“FirefoxWebElement”类型的对象在使用 Selenium Python 通过 send_keys 发送文本时没有 len() 错误【英文标题】:TypeError: object of type 'FirefoxWebElement' has no len() error while sending text through send_keys using Selenium Python 【发布时间】:2022-01-03 16:26:23 【问题描述】:代码试验:
lists = driver.find_elements_by_xpath("//*[@class= 'gradeA']/td[1]")
for list_item in lists:
print(list_item.text)
driver.find_element_by_xpath("//input[@id='event_name']").send_keys(list_item)
这是错误:
Traceback (most recent call last):
File "C:/Users/Eventbuizz-t460-ki/PycharmProjects/pythonProject/pythonSelenium/super admin.py", line 31, in <module>
y.send_keys(list_item)
File "C:\Users\Eventbuizz-t460-ki\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\webelement.py", line 348, in send_keys
'text': "".join(keys_to_typing(value)),
File "C:\Users\Eventbuizz-t460-ki\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\common\utils.py", line 150, in keys_to_typing
for i in range(len(val)):
TypeError: object of type 'FirefoxWebElement' has no len()
Process finished with exit code 1
【问题讨论】:
在您的示例中,您已经打印了list_item.text
,但在 send_keys 中您只是发送了 list_item
,这似乎是一个网络元素。如果你想发送一个字符串试试.send_keys(list_item.text)
当我使用 driver.find_element_by_xpath("//input[@id='event_name']").send_keys(list_item.text)
时,它显示错误文件 "C:\Users\Eventbuizz-t460-ki\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\ remote\webelement.py”,第 73 行,文本文件“C:\Users\Eventbuizz-t460-selenium.common.exceptions.StaleElementReferenceException: Message: The element reference of The element reference of <td> stale: either the element is no longer attached to the DOM or the page has been refreshed
。当您输入详细信息时,此页面是否刷新,您是否在循环中提交表单?您在浏览器中看到了什么?
没有页面不刷新。
lists = driver.find_elements_by_xpath("//*[@class= 'gradeA']/td[1]") for list_item in lists: print(list_item.text) driver.find_element_by_xpath("//span[normalize-space()='Events']").click() time.sleep(2) driver.find_element_by_xpath("//span[normalize-space()='Organizer Events']").click() time.sleep(8) driver.find_element_by_xpath("//input[@id='event_name']").send_keys(list_item.text)
这是我的完整代码,请检查
当您使用 GeckoDriver 和 firefox find_elements_by_xpath()
会返回 FirefoxWebElements 的列表。
你可以遍历列表:
for list_item in lists:
并在循环中打印文本:
print(list_item.text)
但是您不能在任何元素中通过 send_keys()
发送任何单独的 FirefoxWebElement。
因此你会看到:
TypeError: object of type 'FirefoxWebElement' has no len()
解决方案
您需要发送元素 text,而不是通过 send_keys()
发送 FirefoxWebElement:
driver.find_element_by_xpath("//input[@id='event_name']").send_keys(list_item.text)
【讨论】:
当我使用 driver.find_element_by_xpath("//input[@id='event_name']").send_keys(list_item.text) 它显示错误文件“C:\Users\Eventbuizz-t460- ki\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\webelement.py”,第 73 行,文本文件“C:\Users\Eventbuizz-t460-selenium.common.exceptions .StaleElementReferenceException:消息:'FirefoxWebElement' has no len()
无关。我强烈认为这个问题的具体错误已经得到解决。随时根据您的新要求提出新问题。
很高兴能为您提供帮助。请accept answer 点击我的 answer 旁边的空心刻度线,它就在 votedown 箭头下方,这样刻度线就会转动绿色.
以上是关于TypeError:“FirefoxWebElement”类型的对象在使用 Selenium Python 通过 send_keys 发送文本时没有 len() 错误的主要内容,如果未能解决你的问题,请参考以下文章
反应本机获取多标记[未处理的承诺拒绝:TypeError:TypeError:未定义不是对象(评估'this.state.markers.map
Django TypeError - TypeError: issubclass() arg 1 必须是一个类
pyspark:TypeError:'float'对象不可迭代
Python 3.8 TypeError: can't concat str to bytes - TypeError: a bytes-like object is required, not 's