Click Element with Selenium python



我正在尝试使用Selenium单击一个按钮。

以下是代码

<div class="ui-dialog-buttonset">
    <button class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" type="button" role="button" aria-disabled="false">
        <span class="ui-button-text"> … </span>
    </button>

我试着通过css选择器来做到这一点:

clickbutton=driver.find_element_by_css_selector("button.ui-button.ui-widget.ui-state-default.ui-corner-all.ui-button-text-only")

**我的错误:无法定位元素:{方法:"css选择器","选择器":"button.ui-button.ui-widget.ui-state-default.ui-corner-all.ui-button-text-only"}**

我是不是搞错了?我不理解这个错误。我应该使用另一个定位器吗?

您的css选择器正常,问题与设置aria-disabled="false"以进行兼容性的html代码有关。对于Web3文档,这意味着相关的元素和descandent是活动的,但在您的情况下,它不起作用。

简单地说,你可以设置aria-disabled="true",然后你可以与按钮交互,但即使你将其设置回false,它仍然有效。要更改按钮属性,可以使用execute_script。除了你的css,你也使用这个css:.ui-dialog-buttonset > button

>>> dr.find_element_by_css_selector(".ui-dialog-buttonset > button").get_attribute("aria-disabled")
u'false'
>>> dr.execute_script('document.querySelector(".ui-dialog-buttonset > button").setAttribute("aria-disabled", true)')
>>> dr.find_element_by_css_selector(".ui-dialog-buttonset > button").get_attribute("aria-disabled")
u'true'
>>> dr.find_element_by_css_selector(".ui-dialog-buttonset > button").click()

最新更新