Selenium:如何通过LinkText找到按钮的xpath?

时间:2017-08-25 07:16:12

标签: java selenium xpath selenium-webdriver automation

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

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个保存按钮。因此,不可能制作方法,因为每次索引都会有所不同。

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

如有澄清,请告知我。

2 个答案:

答案 0 :(得分:3)

  

有没有办法点击type =&#34; button&#34;通过linkText

实际上By.linkText()用于在您尝试查找<a>元素时仅查找包含指定链接文字的<button>元素。因此,您无法使用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()']

答案 1 :(得分:0)

由于angular.element(document.querySelector('.mydiv')).bind( 'mousewheel', function ( e ) { var event = e.originalEvent; var d = event.wheelDelta || -event.detail; this.scrollTop += ( d < 0 ? 1 : -1 ) * 30; e.preventDefault(); }); 按钮包含Save属性,您可以按如下方式构建class

xpath