代码是:
<button class="btn btn-default btn-xs" style="padding:0 5px" id="addPiidRelatedNumberBtn_332741000" ng-click="AddPiidRelatedNumber($event)" ng-show="EnableEditable && 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可以随时更改,因为其中有一些数字。有没有更好的方法编写代码以单击此按钮?
答案 0 :(得分:1)
您可以尝试以下操作:
driver.findElement(By.xpath("//button[starts-with(@id,'addPiidRelatedNumberBtn_')]")).click();
您可以在本文中找到有关XPath用于测试的更多信息:
答案 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)']"));