java - 使用 css 选择器在表中使用多个元素获取元素

标签 java selenium css-selectors ui-automation selenide

我正在使用 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我得到了CSS选择器,前面有Chrome驱动程序信息。我可以把它取下来,但我认为还有更好的解决方案:

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

此代码采用“Mask”和“8%”元素。 但我真正想要的是测试 getText 给定值是否为“Mask”,取百分比值并进行比较。 例如:在网络中搜索单词“Mask”,获取百分比值(在本例中为 8%)并使用断言验证它是否正好为 8%。

有没有办法设置带有索引的CSS选择器,例如

tr[1] > [class='ng-binding']

第二个 tr 类别将选择哪一个?还有其他建议可以找到我想要的吗?

编辑: 是否可以仅使用一行来获取带有 css 选择器的元素,如回答 @Guy 所写的 xpath 选项所示:

WebElementelement=getWebDriver().findElement(By.xpath("//td[text()='Mask']/followingsibling::td[2]"));
element.getText(); // 8%

最佳答案

您可以使用xpath使用Mask文本来定位元素

WebElement element = getWebDriver().findElement(By.xpath("//td[text()='Mask']/following-sibling::td[2]"));
element.getText(); // 8%

关于java - 使用 css 选择器在表中使用多个元素获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46088968/

相关文章:

css - 有没有更快的方法在 IE7 中提供 ":before"和 ":after"选择器支持?

java - 如何使用 Eclipse Kepler 中的 WindowBuilder 内核制作一个简单的窗口?

java - 无法导入 com.google.android.gms :play-services-ads:17. 1.1

java - Files.readAllLines 和 Files.lines 哪个方法读取文件更快?

Java Selenium WebDriver : Click on Instagram Login Button

c# - 如何使用 C# 使用 Selenium 将所有元素放入列表或字符串中?

asp.net - .NET 和 Jenkins 的 Selenium 性能 - 如何分析和改进它?

jquery - jquery 属性选择器找不到的属性

html - 如何使用 CSS 创建锯齿形?

java - 反射访问控制异常