Как получить доступ к элементам формы angularjs с помощью веб-драйвера java-selenium? - PullRequest
0 голосов
/ 29 мая 2018

Как получить доступ к элементам формы, таким как ng-repeat для автоматизации веб-приложений с помощью angularjs внешнего интерфейса с помощью java-selenium Webdriver .Я смог автоматизировать большинство вещей в веб-приложении с помощью xpath.Теперь возникла ситуация, когда я должен был выполнить автоматически сгенерированные тесты, где количество вопросов, тип вопроса и т. Д. Может варьироваться в зависимости от типа теста.Теперь я должен получить доступ к индексу data-ng-repeat.HTML-код этого же приведен ниже, пожалуйста, помогите мне подсчитать индекс здесь.

<div class="margin-top-30">
   <!-- <div class="progress-box time-header-font-2 text-center open-sans" 
      ng-repeat="x in [1,2,3,4,5,6,7] track by $index">{{x}}
      	</div> -->
   <!-- ngRepeat: assessment in assessmentData -->
   <div data-ng-repeat="assessment in assessmentData" class="progress-box time-header-font-2 text-center pointer-cursor open-sans legend-0" data-ng-click="loadRandomQuestion($index)" style="">1</div>
   <!-- end ngRepeat: assessment in assessmentData -->
   <div data-ng-repeat="assessment in assessmentData" class="progress-box time-header-font-2 text-center pointer-cursor open-sans legend-0" data-ng-click="loadRandomQuestion($index)">2</div>
   <!-- end ngRepeat: assessment in assessmentData -->
   <div data-ng-repeat="assessment in assessmentData" class="progress-box time-header-font-2 text-center pointer-cursor open-sans legend-0" data-ng-click="loadRandomQuestion($index)">3</div>
   <!-- end ngRepeat: assessment in assessmentData -->
   <div data-ng-repeat="assessment in assessmentData" class="progress-box time-header-font-2 text-center pointer-cursor open-sans legend-0" data-ng-click="loadRandomQuestion($index)">4</div>
   <!-- end ngRepeat: assessment in assessmentData -->
   <div data-ng-repeat="assessment in assessmentData" class="progress-box time-header-font-2 text-center pointer-cursor open-sans legend-0" data-ng-click="loadRandomQuestion($index)">5</div>
   <!-- end ngRepeat: assessment in assessmentData --> 
</div>
<div class="col-sm-12 padding-snip">
   <div data-ng-show="finish_quiz" class="finish-quiz-btn text-center ng-hide" style="">
      <span class="time-header-font-1 open-sans"><span translate="portallang_finishQuiz" class="ng-scope">FINISH QUIZ</span></span>
   </div>
   <!-- <div ng-if="count+1 >= totalQuestions" class="finish-quiz-btn text-center pointer-cursor legend-1" ng-click="stop();">
      <span class="time-header-font-1 open-sans">FINISH QUIZ</span>
      </div> -->
</div>

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Если вы пытаетесь получить значение $index, измените ваш ng-repeat, чтобы включить атрибут data- со значением.Посмотрите на ng-attr.

<div class="progress-box time-header-font-2 text-center open-sans" 
    ng-repeat="x in [1,2,3,4,5,6,7] track by $index"
    ng-attr-data-index="{{ $index }}"
>
0 голосов
/ 29 мая 2018

Ява

List<WebElement> list = driver.findElements(
       By.cssSelector("div[data-ng-repeat='assessment in assessmentData']"));
String script = "angular.element(arguments[0]).scope().$index";

for(WebElement item:list) {
    String index = ((JavascriptExecutor) driver).executeScript(script, item).toString();
    System.out.println("text: " + item.getText());
    System.out.println("index: " + index);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...