Selenium/Python:单击地址为JavaScript的按钮时出错,单击onclick
我一直在尝试在使用selenium和python的页面上单击href=“javascript:;” 相关的HTML代码是:Selenium/Python:单击地址为JavaScript的按钮时出错,单击onclick,javascript,python,selenium,onclick,click,Javascript,Python,Selenium,Onclick,Click,我一直在尝试在使用selenium和python的页面上单击href=“javascript:;” 相关的HTML代码是: 24 25 26 27 28 似乎是浏览器。通过xpath('/*[@id=“CellPlayDate0”]”查找元素。返回元素列表 您需要选择一个元素并创建一个单击事件 浏览器。通过xpath('/*[@id=“CellPlayDate0”]”)查找元素[0]。单击()错误说明了一切: AttributeError: 'list' object has no attr
24
25
26
27
28
似乎是浏览器。通过xpath('/*[@id=“CellPlayDate0”]”查找元素。
返回元素列表
您需要选择一个元素并创建一个单击事件
浏览器。通过xpath('/*[@id=“CellPlayDate0”]”)查找元素[0]。单击()
错误说明了一切:
AttributeError: 'list' object has no attribute 'click'
根据您的代码块,您有:
browser.find_elements_by_xpath('//*[@id="CellPlayDate0"]').click()
而不是WebElement
返回列表。因此,当您尝试单击列表时
会看到错误为AttributeError:“List”对象没有属性“click”
解决方案可能是将方法find\u elements\u by\u xpath
更改为find\u elements\u by\u id
,或者构建一个唯一的xpath
,如下所示:
- 由于
WebElement
具有id
:
browser.find_elements_by_id("CellPlayDate0').click()
- 构造一个
xpath
:
browser.find_elements_by_xpath("//td[@id='CellPlayDate0']").click()
这里的问题是,您正在调用
列表中的click()
,而不是实际具有所需单击的
锚。请尝试以下方法:
browser.find_element_by_xpath('//*[@id="CellPlayDate0"]/a').click()
注意使用了find_element\u by_xpath
而不是find_element[s]\u by_xpath
?或使用css:
browser.find_element_by_css_selector('#CellPlayDate0 a').click()
你有两个问题
首先,xpath表达式返回一个列表,正如其他答案所指出的那样。Python列表没有click方法,返回的元素有
其次,xpath表达式实际上没有找到任何内容。它返回一个空列表,其中没有匹配项,这就是为什么索引超出范围错误的原因
您可能想要的是:
for elem in browser.find_elements_by_xpath('//*[@id="CellPlayDate0"]'):
elem.click()
请注意,您仍然需要调整xpath字符串以实际匹配页面上的内容。我已经尝试过了。但是,有一个索引器:列表索引超出范围。在这种情况下,您的xpath表达式'/*[@id=“CellPlayDate0”]
与html页面中的任何id
都不匹配。实际上,我使用copy xpath在页面中复制该html代码。您可以用html页面的片段编辑原始问题吗,存在相同的错误,AttributeError:“列表”对象没有属性“单击”没有错误。但是,未单击该按钮。