Я пытаюсь идентифицировать кнопку в angularjs. Ниже приведен код HTML. Как я дифференцирую эти кнопки с помощью селена. Я использую robotframework для автоматизации, но это не имеет значения, пока кто-то может помочь в идентификации этих элементов/кнопок с помощью селектора css или xpath или любых других средств, которые помогают идентифицировать их однозначно.
У меня 4 кнопки Mr Mrs Ms Other
Html для 4, как показано ниже
<button ng-repeat="choice in question.choices" ng-class="{selected: isSelected(choice.value)}" ng-click="selectAnswer(choice)" tabindex="1" class="ng-scope"><span fittext=".8" fittext-max="16" class="ng-scope ng-binding" style="display: inline-block; white-space: nowrap; line-height: 1; font-size: 16px;">Mr</span></button>
<button ng-repeat="choice in question.choices" ng-class="{selected: isSelected(choice.value)}" ng-click="selectAnswer(choice)" tabindex="1" class="ng-scope"><span fittext=".8" fittext-max="16" class="ng-scope ng-binding" style="display: inline-block; white-space: nowrap; line-height: 1; font-size: 16px;">Mrs</span></button>
<button ng-repeat="choice in question.choices" ng-class="{selected: isSelected(choice.value)}" ng-click="selectAnswer(choice)" tabindex="1" class="ng-scope"><span fittext=".8" fittext-max="16" class="ng-scope ng-binding" style="display: inline-block; white-space: nowrap; line-height: 1; font-size: 16px;">Ms</span></button>
<button ng-repeat="choice in question.choices" ng-class="{selected: isSelected(choice.value)}" ng-click="selectAnswer(choice)" tabindex="1" class="ng-scope"><span fittext=".8" fittext-max="16" class="ng-scope ng-binding" style="display: inline-block; white-space: nowrap; line-height: 1; font-size: 16px;">Other</span></button>
RobotFramework способ найти одну из этих кнопок будет
Click Button xpath=//span[text()="Mr"]/parent::button
buttons
( css=button
), а затем перебирать их, пока не найдете нужную, но это очень плохая идея. CSS нельзя использовать для поиска по тексту элемента
Вы можете определить <span>
в кнопках по тексту и щелкнуть по нему
driver.findElement(By.xpath("//span[text()='Mr']"));
driver.findElement(By.xpath("//span[text()='Mrs']"));
//...
// first take each button inside the list
List<WebElement> myButton = driver.findElements(By.className("ng-scope"));
System.out.println("Size of the button the webpage is : " + myButton.size());
// now you can click button on the basis of index like below
myButton.get(0).click(); // for first button
myButton.get(1).click(); // for second button
myButton.get(2).click(); // for third button
myButton.get(3).click(); //For Forth Button
ng-scope
- один очень плохой способ выбора чего-либо в приложении Angular