【问题标题】:How to find button element with webdriver?如何使用 webdriver 查找按钮元素?
【发布时间】:2014-12-17 16:14:59
【问题描述】:

我有以下按钮代码:

<div class="buttons">
<button class="btn dialog-confirm btn-primary" style="margin-left: 4px;">Confirm</button>
<button class="btn dialog-cancel" style="margin-left: 4px;">Cancel</button>
</div>

有两个按钮是确认,另一个是取消 我可以找到带有 XPath 的按钮,但我不想使用 XPath。 在这种情况下是否有另一种方法可以找到按钮元素?

我试过这个:

driver.findElement(By.className("btn dialog-confirm btn-primary")).click();

没有找到按钮 谢谢你的帮助

【问题讨论】:

    标签: java selenium selenium-webdriver


    【解决方案1】:

    只需检查一个 dialog-confirm 类:

    driver.findElement(By.className("dialog-confirm")).click();
    

    或者,使用CSS Selector

    driver.findElement(By.cssSelector("button.dialog-confirm")).click()
    

    【讨论】:

    • 我得到 'WebDriver' 对象没有属性 'findElement'
    【解决方案2】:

    添加到 alecxe 和 master slave 的回答中。如果被按钮文字点击会更具体,也更容易理解。使用下面的 xpath 找到按钮单击的 sn-p。

    driver.findElement(By.xpath("//button[text()='Confirm']")).click();
    driver.findElement(By.xpath("//button[text()='Cancel']")).click();
    

    【讨论】:

    • 很好的补充——虽然 OP 不想使用 XPATH,但许多发现这个问题的人可能需要这样做,因为许多网站不使用描述性(甚至任何)类。
    【解决方案3】:

    使用 cssSelector 的其他方式:

    1. 使用完整属性,即:

      driver.findElement(By.cssSelector("button[class='btn dialog-confirm btn-primary']"))

    2. 使用属性的一部分,即:

       driver.findElement(By.cssSelector("button[class*='dialog-confirm']"))
      

    【讨论】:

      【解决方案4】:

      投票给alecxe,你在两个账户上的尝试是错误的,在多个类上匹配时你应该使用By.cssSelector,当它们设置在同一个元素上时,你用一个点连接它们,比如

      driver.findElement(By.cssSelector(".btn.dialog-confirm.btn-primary")).click();
      

      【讨论】:

        【解决方案5】:

        这对我有用:

        driver.find_element_by_class_name('buyable-full-width').click();
        

        【讨论】:

          猜你喜欢
          • 2023-01-22
          • 1970-01-01
          • 2019-08-31
          • 1970-01-01
          • 2017-07-03
          • 1970-01-01
          • 1970-01-01
          • 2020-05-18
          • 1970-01-01
          相关资源
          最近更新 更多