【问题标题】:Selenium : How to find xpath of button by LinkText?Selenium:如何通过 LinkText 找到按钮的 xpath?
【发布时间】:2017-08-25 07:16:12
【问题描述】:

一个页面中基本上有 3 种类型的保存按钮。现在,我尝试点击的按钮是type="button",其余的保存类型未定义为type="button"。对于所有三个保存按钮LinkText,都定义为Save。那么,有什么方法可以通过linkText点击type="button"

HTML:

<button class="btn btn-md bgm-blue m-r-10 waves-effect" ng-click="updateUser()" type="button">Save</button>

我尝试过的代码:

List<WebElement> list = Util.getWebDriver().findElements(By.xpath("//*[text()='Save']"));
System.out.println("SaveButton"+list.size()); ///Returning 3 save button in a page
list.get(3).click();

现在,假设一个页面有 4 个保存按钮,而另一个页面有 3 个保存按钮。所以,不可能做一个方法,因为每个时间索引都会不同。

如果有任何方法可以通过type="button" 找到xpath。每次我想点击"Save"时,我都会很容易地制作一个方法并调用它。

如果需要澄清,请告诉我。

【问题讨论】:

    标签: java selenium xpath selenium-webdriver automation


    【解决方案1】:

    有什么方法可以通过linkText点击type="button"

    实际上By.linkText() 仅用于在您尝试定位&lt;button&gt; 元素时定位包含给定链接文本的&lt;a&gt; 元素。所以你不能使用By.linkText()定位欲望元素。

    我尝试点击的按钮是type="button",其余的保存类型未定义为type="button"

    正如你所说,只有欲望按钮包含属性type="button",所以使用其他定位器很容易找到该元素,如下所示:-

    • By.cssSelector()

      • button[type='button']
      • button[type='button'][ng-click='updateUser()']
      • button.btn.btn-md.bgm-blue.waves-effect[type='button'][ng-click='updateUser()']
    • By.xpath()

      • //button[text()='Save' and @type='button']
      • //button[.='Save' and @type='button']
      • //button[text()='Save' and @type='button' and @ng-click='updateUser()']
      • //button[.='Save' and @type='button' and @ng-click='updateUser()']

    【讨论】:

    • 完美的解释。如果我要使用方法并在任何地方使用它,则以下 xpath 代码将起作用-//button[.='Save' and @type='button']
    【解决方案2】:

    由于Save 按钮包含class 属性,您可以按如下方式构造xpath

    findElements(By.xpath("//button[@class='btn btn-md bgm-blue m-r-10 waves-effect'][contains(text(),'Save')]"));
    

    【讨论】:

    • 我认为 selenium 不支持复合类名。
    猜你喜欢
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-20
    相关资源
    最近更新 更多