【问题标题】:Click Element with Selenium python单击带有 Selenium python 的元素
【发布时间】:2016-02-19 10:17:16
【问题描述】:

我正在尝试使用 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-仅按钮文本"} **

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

【问题讨论】:

  • 您真的需要针对所有这些类吗?如果你这样做ui-dialog-buttonset button.ui-button
  • 当我尝试这些时仍然不起作用
  • 这些按钮不止一个吗?或者您是否尝试过使用find_element_by_class_name
  • 有 2 个按钮,一个“创建”按钮(我试图单击的按钮)和一个关闭按钮。我试过 driver.find_element_by_class_name ("ui-dialog_buttonset")
  • 我明白了。你知道 xpath 吗?

标签: css python-2.7 unit-testing selenium


【解决方案1】:

您的 css 选择器没问题,问题与 html 代码有关,该代码设置了 aria-disabled="false" 以实现兼容性。对于 Web3 documentation 这意味着相关元素和下降是活动的,但在你的情况下它不起作用。

很简单,您可以设置aria-disabled="true",然后您可以与按钮进行交互,但即使您将其设置回false,它仍然可以工作。要更改按钮属性,可以使用execute_script。您也可以使用这个 css 来替代您的 css:.ui-dialog-buttonset &gt; 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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 2015-03-08
    • 2016-11-14
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多