如何在Selenium webdriver中的父WebElement中查找子元素

时间:2016-08-29 11:21:42

标签: selenium-webdriver css-selectors

我以为WebElement.findElement()只搜索了元素下方的DOM, 但它显然搜索整个DOM。我在HTML中有这样的东西:

<table>
<tbody>
  <tr>
      <td>Some Text</td>
  </tr>
  <tr class="network">
      <td><input ...></td>
  <tr>
      <td>Some More Text</td>
  </tr>
  <tr class="network">
       <td><input ...></td>
</tbody>
</table>

硒代码如下:

    List<WebElement> tableRows =
    radioTable.findElements(By.CssSelector("tbody > tr"));
    for (WebElement row : tableRows) {
    String s = row.getAttribute("class");
    if (s.equals("network")) {

    currentGroup.add(row.findElement(By.CssSelector(".network")));
    }

然而,row.findElement()调用从DOM的顶部进行搜索 每次都找到相同的首字母。

如果只在WebElement.findElement()下搜索,那将非常有用 当前元素。

1 个答案:

答案 0 :(得分:0)

好吧,我们可以获取行元素的索引,然后使用第 n 个子选择器我们可以这样选择子元素。

List <WebElement> tableRows =
radioTable.findElements(By.CssSelector("tbody > tr"));
tableRows.forEach((row, index) => {
    String s = row.getAttribute("class");
    if (s.equals("network")) {
        currentGroup.add(row.findElement(By.CssSelector(`.network:nth-child(${index + 1}) .network`)));
    }
})