TypeError:使用Selenium Python通过send_key发送文本时,FirefoxWebElement';类型的对象没有len()错误
问题描述
代码试验:
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:UsersEventbuizz-t460-kiAppDataLocalProgramsPythonPython36libsite-packagesseleniumwebdriveremotewebelement.py", line 348, in send_keys
{'text': "".join(keys_to_typing(value)),
File "C:UsersEventbuizz-t460-kiAppDataLocalProgramsPythonPython36libsite-packagesseleniumwebdrivercommonutils.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
解决方案
您正在使用GeckoDriver和firefoxfind_elements_by_xpath()
返回FirefoxWebElement的列表。
您可以循环访问列表:
for list_item in lists:
并打印循环内的文本:
print(list_item.text)
但您不能在任何元素内通过send_keys()
发送任何单独的FirefoxWebElement。
因此您可以看到:
TypeError: object of type 'FirefoxWebElement' has no len()
解决方案
您需要发送元素文本,而不是通过send_keys()
发送FirefoxWebElement:
driver.find_element_by_xpath("//input[@id='event_name']").send_keys(list_item.text)
相关文章