AttributeError:'list'对象没有属性'click' - Selenium Webdriver

vkr*_*ams 10 python selenium webdriver

我试图使用python在Selenium webdriver中使用click命令.但我收到以下错误.有人能帮我吗?

Traceback (most recent call last):
File "C:\Users\vikram\workspace\LDC\test.py", line 13, in <module>
driver.find_elements_by_link_text("MISCQA Misc Tests").click()
AttributeError: 'list' object has no attribute 'click'
Run Code Online (Sandbox Code Playgroud)

这是我的计划

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By 
from selenium.common.exceptions import NoSuchElementException 
from selenium.webdriver.support.ui import WebDriverWait
import config

url = config.config.get('url')

driver = webdriver.Ie()
driver.get(url)

driver.find_elements_by_link_text("MISCQA Misc Tests").click()

driver.close()
Run Code Online (Sandbox Code Playgroud)

我想我错过了一些东西.请建议我

vkr*_*ams 35

谢谢你的帮助.我找到了自己的答案."Dan Niero"给出的想法

问题是,我正在使用driver.find_element[s]而不是driver.find_element.所以一个人有所作为.事实上我正在关注日食:(.显然driver.find_elements_by_link_text返回列表所以如果我发送点击事件它不会理解.

感谢帮助和抱歉我的坏问题

-Vikram


Dan*_*ero 10

也许driver.find_elements_by_link_text("MISCQA Misc Tests")[0].click()还是另一个指数......

我不知道Selenium,但我猜find_elements_by_link_text找不到一件事,或者该方法总是返回一个列表而不是一个对象.如果你绝对确定只有一个对象应该是你搜索的结果,那么就像我提到的那样只使用[0],如果你不能假设只有一个对象,那么你需要想出一个更强大的对象.战略


fri*_*anH 5

参考定位元素文档,这里有一个解释find_elements_*

查找多个元素(这些方法将返回一个列表)

因此,要访问特定元素,请使用如下索引:

#first element
driver.find_elements_by_xpath("xpath")[0].click()
Run Code Online (Sandbox Code Playgroud)

或者您可以使用循环来访问列表中的所有元素:

#assumed to click the checkbox
chks = driver.find_elements_by_xpath("xpath")
for chk in chks:
    chk.click()
Run Code Online (Sandbox Code Playgroud)