Уникальное имя для кнопки со знаком плюс - хочу нажать на эту кнопку - PullRequest
0 голосов
/ 11 октября 2018

Код:

<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();

Но я знаю, что идентификатор можно изменить в любое время, какв нем есть несколько цифр.Есть ли лучший способ кодировать это, чтобы нажать эту кнопку?

Ответы [ 3 ]

0 голосов
/ 11 октября 2018

Вы можете попробовать что-то вроде этого:

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

Более подробную информацию об использовании XPath для тестирования вы можете найти в этой статье:

Учебник XPath по гуру99

0 голосов
/ 11 октября 2018

Требуемый элемент - это элемент 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();
    
0 голосов
/ 11 октября 2018

Вы можете использовать угловой атрибут,

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