我正在使用 Selenide/Selenium 编写我的 java 自动化脚本,最近我遇到了一个问题。我想从我比较第二个元素的同一行中获取一个元素。html示例代码:
<tr ng-repeat="testing" class="ng-scope" style="">
<td class="ng-binding">Style</td>
<td ng-if="testing2" class="ng-binding ng-scope">1</td>
<td class="ng-binding">5%</td>
</tr>
<tr ng-repeat="testing" class="ng-scope" style="">
<td class="ng-binding">Mask</td>
<td ng-if="testing2" class="ng-binding ng-scope">2</td>
<td class="ng-binding">8%</td>
</tr>
...
让我们想象会有更多这样的人。最重要的是这些可以随机化。每一次。它们取决于我选择的最后一页以及如何选择。
所以基本上我想搜索测试,它有 8%。
我试过了,但我不知道该怎么办。它将所有元素存储在列表中。Bu 我在它之前得到了带有 Chrome 驱动程序信息的 css 选择器。我可以脱掉它,但我认为有更好的解决方案:
List<WebElement> list = getWebDriver().findElements(By.cssSelector("[ng-
repeat='hyvitisLiik in vm.taotluseHyvitised'] > [class='ng-binding']"));
for(int i = 0; i < list.size(); i++){
logger.info(list.get(1));
}
我还尝试使用以下代码获取元素:
int counter = $$(By.cssSelector("tr > [class='ng-binding']")).size();
for (int i = 0; i < counter; i++) {
SelenideElement word= $$(By.cssSelector(lokaator)).get(counter);
word.getText();
}
此代码采用“掩码”和“8%”元素。但我真正想要的是测试 getText 给定值是否为“掩码”,取百分比值并进行比较。例如:在网络上搜索单词“Mask”,获取百分比值(在这种情况下为 8%)并通过断言验证它恰好是 8%。
有没有办法用索引设置 CSS 选择器,比如
tr[1] > [class='ng-binding']
哪个将选择第二个 tr 类?找到我想要的任何其他建议?
编辑: 是否可以仅使用一行来获取带有 css 选择器的元素,如 xpath 选项所示,回答@Guy 所写的内容:
WebElementelement=getWebDriver().findElement(By.xpath("//td[text()='Mask']/followingsibling::td[2]"));
element.getText(); // 8%