Trying to input numbers in text area but failed with error:list object has no attribute
Trying to input numbers in text area but failed with error:list object has no attribute
我是 Python 的新手。尝试使用它填写网络表单。 Web 表单具有以下 HTML 代码
<table class=" l1 ">
<tbody>
<tr>
<td>
<input class="inputtext" type="text" name="q" >
</td>
...
我试过了
pass_code = driver.find_elements_by_name('q')
pass_code.click()
pass_code.send_keys("abcde")
我已经从 selenium 导入了 webdriver。当程序运行到 运行 时,它显示错误:
Traceback (most recent call last):
File "C:/Users/Retarded /Desktop/fail.py", line 23, in <module>
pass_code.send_keys("abcde")
AttributeError: 'list' object has no attribute 'send_keys'
我错过了什么?
这意味着该页面有多个名为 q
的元素,因此
pass_code = driver.find_elements_by_name('q')
pass_code
是一个列表。
尝试使用其他方式获取目标输入,或者只是在列表中找到它的索引,然后使用send_keys
填写您想要的输入。
如果只有一个名称为 q
的元素,那么您应该只选择 find_element_by_name()
而不是 find_elements_by_name()
。
第一个返回一个元素,第二个返回一个列表(你需要告诉 selenium 你想继续使用列表中的哪个元素)
所以试试这个代码:
pass_code = driver.find_element_by_name('q')
pass_code.click()
pass_code.send_keys("abcde")
它仍然可以,这将不起作用,例如当有多个元素名为 q
.
时
上面的代码只会获取它找到的第一个并在其上执行命令。如果是这种情况,您最好通过 CSS 或 xpath.
查找元素
您的查找不知何故失败,请使用 xpath 而不是名称
pass_code = driver.find_element_by_xpath("//input[@name='q']") "
我是 Python 的新手。尝试使用它填写网络表单。 Web 表单具有以下 HTML 代码
<table class=" l1 ">
<tbody>
<tr>
<td>
<input class="inputtext" type="text" name="q" >
</td>
...
我试过了
pass_code = driver.find_elements_by_name('q')
pass_code.click()
pass_code.send_keys("abcde")
我已经从 selenium 导入了 webdriver。当程序运行到 运行 时,它显示错误:
Traceback (most recent call last):
File "C:/Users/Retarded /Desktop/fail.py", line 23, in <module>
pass_code.send_keys("abcde")
AttributeError: 'list' object has no attribute 'send_keys'
我错过了什么?
这意味着该页面有多个名为 q
的元素,因此
pass_code = driver.find_elements_by_name('q')
pass_code
是一个列表。
尝试使用其他方式获取目标输入,或者只是在列表中找到它的索引,然后使用send_keys
填写您想要的输入。
如果只有一个名称为 q
的元素,那么您应该只选择 find_element_by_name()
而不是 find_elements_by_name()
。
第一个返回一个元素,第二个返回一个列表(你需要告诉 selenium 你想继续使用列表中的哪个元素)
所以试试这个代码:
pass_code = driver.find_element_by_name('q')
pass_code.click()
pass_code.send_keys("abcde")
它仍然可以,这将不起作用,例如当有多个元素名为 q
.
上面的代码只会获取它找到的第一个并在其上执行命令。如果是这种情况,您最好通过 CSS 或 xpath.
查找元素您的查找不知何故失败,请使用 xpath 而不是名称
pass_code = driver.find_element_by_xpath("//input[@name='q']") "