angularjs - 如何使用 java-selenium webdriver 访问 angularjs 表单元素?

标签 angularjs selenium selenium-webdriver selenium-chromedriver

如何使用 java-selenium Webdriver 访问诸如 ng-repeat 之类的表单元素,以通过前端 angularjs 自动化 Web 应用程序。在 xpath 的帮助下,我能够自动化 Web 应用程序中的大部分事情。现在的情况是,我必须进行自动生成的测验,其中问题数量、问题类型等可能会根据测验类型而变化。 现在我必须访问 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>

最佳答案

Java

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

关于angularjs - 如何使用 java-selenium webdriver 访问 angularjs 表单元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50579955/

相关文章:

selenium - 如何使用 Selenium 3 设置 Selenium Grid

javascript - 如何在 angular-cli.json 样式部分包含所有 .less 文件?

javascript - RequireJS + Angular : Undefined app. 回调不触发

angularjs - 输入时未验证 Angular ui-bootstrap datepicker 思维

excel - 使用 selenium VBA 登录具有两个表单组的网站

java - 如果属性相同,我们如何获得跨度值

javascript - angular-google-maps 现在在开始时隐藏时可以正确显示

jquery - 无法使用 Selenium 在页面上找到 p 标记元素

java - 使用 Java 检查 Selenium WebDriver 中元素的位置

java - 如何使用 selenium 更改输入值 [type ='range' ]