带加号的按钮的唯一名称-要单击此按钮

时间:2018-10-10 22:55:48

标签: java selenium xpath css-selectors webdriver

代码是:

<button class="btn btn-default btn-xs" style="padding:0 5px" id="addPiidRelatedNumberBtn_332741000" ng-click="AddPiidRelatedNumber($event)" ng-show="EnableEditable &amp;&amp; CanEdit">
<span class="glyphicon glyphicon-plus" title="Add New Related Number"></span>

我在STS捆绑软件中编写了此硒代码:

WaitUtility.ThreadSleep(1000);
driver.findElement(By.xpath("//button[@id='addPiidRelatedNumberBtn_332741000']")).click();

但是我知道ID可以随时更改,因为其中有一些数字。有没有更好的方法编写代码以单击此按钮?

3 个答案:

答案 0 :(得分:1)

您可以尝试以下操作:

driver.findElement(By.xpath("//button[starts-with(@id,'addPiidRelatedNumberBtn_')]")).click();

您可以在本文中找到有关XPath用于测试的更多信息:

XPath tutorial on guru99

答案 1 :(得分:1)

所需元素是Angular元素,因此您需要诱使 WebDriverWait 使元素可点击,并且可以使用以下任一解决方案:

  • cssSelector

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("button.btn.btn-default.btn-xs>span.glyphicon.glyphicon-plus[title='Add New Related Number']"))).click();
    
  • xpath

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[@class='btn btn-default btn-xs']/span[@class='glyphicon glyphicon-plus' and @title='Add New Related Number']"))).click();
    

答案 2 :(得分:0)

您可以使用角度属性

driver.findElement(By.xpath("//button[@ng-click='AddPiidRelatedNumber($event)']"));