Angularjs: определение кнопки в Selenium

0

Я пытаюсь идентифицировать кнопку в 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>
  • 0
    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; пробел: nowrap; line-height : 1; размер шрифта: 16 пикселей; "> Mr </ span> </ button>
  • 0
    <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; пробел: nowrap; line-height: 1; font- размер: 16 пикселей; "> миссис </ span> </ button>
Показать ещё 2 комментария
Теги:
selenium-webdriver
robotframework

3 ответа

0
Лучший ответ

RobotFramework способ найти одну из этих кнопок будет

Click Button  xpath=//span[text()="Mr"]/parent::button
  • 0
    Спасибо, Джим .... Это сработало ... спасибо, куча ... Есть ли возможность использовать селектор CSS вместо xpath?
  • 0
    Вы можете выбрать все buttons ( css=button ), а затем перебирать их, пока не найдете нужную, но это очень плохая идея. CSS нельзя использовать для поиска по тексту элемента
Показать ещё 1 комментарий
1

Вы можете определить <span> в кнопках по тексту и щелкнуть по нему

driver.findElement(By.xpath("//span[text()='Mr']"));
driver.findElement(By.xpath("//span[text()='Mrs']"));
//...
  • 0
    Вы определили диапазон, а не кнопку
  • 0
    @ Джим Да, я знаю. Я повторяю свой ответ.
Показать ещё 1 комментарий
0
// 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
  • 0
    ng-scope - один очень плохой способ выбора чего-либо в приложении Angular
  • 0
    спасибо, бхаргав ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню