我正在用 Java 编写 Selenium 测试,其中我的脚本首先对源系统运行查询并收集预期结果。在此示例中,我的查询返回 4 个成员(member)号码,然后我希望将其与 UI 上的表格进行交叉引用,以确保这 4 个成员(member)号码出现在表格上。我还需要确保 UI 上显示的成员(member)号码不超过或少于这 4 个。当源系统数据发生更改时,查询很可能会返回 3 或 5 个成员(member)号码,因此我需要足够智能的测试来根据查询结果知道要查找多少个成员(member)号码。
我认为针对 UI 断言查询结果的方法是将两个数据集放入数组中并运行断言 equals 以确保它们彼此匹配。
我的用户界面如下:
<tbody>
<tr data-ng-repeat="member in searchresult" class="ng-scope odd" role="row">
<td class="ng-binding sorting_1">27002</td>
<td class="ng-binding">Test</td>
<td class="ng-binding">Test</td>
</td>
</tr><tr data-ng-repeat="member in searchresult" class="ng-scope even" role="row">
<td class="ng-binding sorting_1">55691</td>
<td class="ng-binding">Standard</td>
<td class="ng-binding">PGY2 TESTED</td>
</td>
</tr><tr data-ng-repeat="member in searchresult" class="ng-scope odd" role="row">
<td class="ng-binding sorting_1">58716</td>
<td class="ng-binding">Standard</td>
<td class="ng-binding">PGY3 TESTED</td>
</td>
</tr><tr data-ng-repeat="member in searchresult" class="ng-scope even" role="row">
<td class="ng-binding sorting_1">95362</td>
<td class="ng-binding">Standard</td>
<td class="ng-binding">STUDENT tested</td>
</td>
</tr></tbody>
</table>
您可以看到 4 个成员编号始终显示在“ng-binding sorting_1”类中。我想知道如何编写定位器来获取每个定位器并将它们放入数组中。
如果这不是此检查的方法,也欢迎听取不同的方法。
最佳答案
调用driver.findElements()
以获取第一个表列中的所有td。
String locator = "tbody > tr[data-ng-repeat='member in searchresult'] > td.sorting_1";
List<WebElement> tds = driver.findElements(By.cssSelector(locator));
ArrayList<String> memberNums = new ArrayList<String>()
for(WebElement ele : tds) {
memberNums.add(ele.getText());
}
关于java - 将表中的多个 UI 元素放入数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50691772/