Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium/Python:单击地址为JavaScript的按钮时出错,单击onclick_Javascript_Python_Selenium_Onclick_Click - Fatal编程技术网

Selenium/Python:单击地址为JavaScript的按钮时出错,单击onclick

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

我一直在尝试在使用selenium和python的页面上单击href=“javascript:;”

相关的HTML代码是:


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:“列表”对象没有属性“单击”没有错误。但是,未单击该按钮。