通过硒驱动程序单击到带有javascript的html元素不会触发

时间:2019-09-21 20:39:25

标签: javascript python selenium

我要在Python的硒驱动程序中单击带有javascript的元素,这是我的代码的示例:

driver.execute_script("els=document.getElementsByClassName('buttons');\
    for (var i = 0; i < els.length; i++) {\
        open=els[i].parentNode.getElementsByClassName('button_open');\
        if(open.length==1){\
            alert('ok');\
        }else(\
            alert('not ok')\
            els[i].click();\
        )\
    }")

和html代码:

<div class="buttonsParent">
    <div class="buttons button_open">
        <span>Content</span>
    </div>
</div>
<div class="buttonsParent">
    <div class="buttons">
        <span>Content</span>
    </div>
</div>

1 个答案:

答案 0 :(得分:0)

Webdriver和Selenium有时可能有点挑剔。尝试使用xpath单击,这对我来说是最成功的。检查元素,右键单击复制,然后复制xpath按钮。

一些示例代码如下:

website = 'url here'
driver = webdriver.Chrome()
driver.get(website)

variable = driver.find_element_by_xpath('xpath here')
driver.find_element_by_xpath('xpath here').click()

旁注:请确保没有弹出窗口或其他可能干扰自动按钮按下的按钮。过去,我的程序会停止运行,因为由于Webdriver屏幕中存在另一个元素或阻塞了我要按下的按钮而找不到该按钮。

这可能会有所帮助,因为它直接处理javascript。

Is there a way to get element by XPath using JavaScript in Selenium WebDriver?