【问题标题】:How to click Checkbox inside ng-repeat table using selenium如何使用 selenium 在 ng-repeat 表中单击复选框
【发布时间】:2016-11-25 17:56:45
【问题描述】:

我正在使用 Selenium Java 自动化一个 Web 应用程序,这个 Web 应用程序具有如下所示的 Angular js ng-repeat 表,它在每行内创建带有复选框的行。我需要根据条件选择几个复选框进行测试。

我正在使用下面的代码来查找这些复选框,但无法找到并单击。

    // To locate table.
    WebElement mytable = driver.findElement(By.xpath("//table[@class='table']/tbody"));
    // To locate rows of table.
    List<WebElement> rows_table = mytable.findElements(By.id("check"));
    // To calculate no of rows In table.
    int rows_count = rows_table.size();
    System.out.println(rows_count);

网页源码如下所示

`<table class="table" ng-cloak> 
<tbody>
<tr ng-repeat="C orderBy : colsort:reverseSort">
<td>
<input id="check" type="checkbox" ng-checked="C.Addc" ng-model="C.Addc" ng-    click="FindMsg(C.Addc,C.MSG)" />
</td>
<td>
{{C.ItemCode}}
</td>
<td>
{{C.Code}}
</td>
<td title="{{C.LongDescription}}">
{{C.LongDescription.substr(0,30)}}...
</td>
<td style="width: 40px; text-align: right">
{{formattingEnd(C.Enduserprice)}}
</td>
<td>
{{C.type}}
</td>
<td>
{{C.statusflag.toUpperCase}}
</td>
<td>
{{C.SInstType}}
</td>
</tr>
</tbody>
</table>`

【问题讨论】:

  • 您用来点击的代码在哪里? id="checkCPE" 的元素是什么?
  • 首先我试图识别复选框并使用下面的代码进行计数。但它返回 0。 id="check" 是在表的每一行中重复的复选框。 > List rows_table = mytable.findElements(By.id("check"));
  • 检查页面上是否有多个表格以及您的表格是否位于iframe/frame

标签: java selenium checkbox angularjs-ng-repeat ui-automation


【解决方案1】:

ngWebDriver 就像一个魅力。

ngWebDriver = new NgWebDriver((JavascriptExecutor) driver); ngWebDriver.waitForAngularRequestsToFinish(); List<WebElement> wes = driver.findElements(ByAngular.repeater("C in SearchCPE")); System.out.println("Row Count is : "+wes.size());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-10
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    • 2018-02-14
    • 1970-01-01
    • 2020-10-06
    • 2015-09-07
    相关资源
    最近更新 更多