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

Selenium webdriver 如何在SeleniumWebDriver中的父WebElement中查找子元素,selenium-webdriver,css-selectors,Selenium Webdriver,Css Selectors,我以为WebElement.findElement()只搜索元素下面的DOM, 但它显然搜索了整个DOM。我在HTML中有类似的内容: <table> <tbody> <tr> <td>Some Text</td> </tr> <tr class="network"> <td><input ...></td> <tr>

我以为
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>

一些文本
更多的文字
和selenium代码如下:

    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")));
    }
列出表格行=
radioTable.findElements(通过.CssSelector(“tbody>tr”);
for(WebElement行:tableRows){
字符串s=row.getAttribute(“类”);
如果(s.equals(“网络”)){
currentGroup.add(row.findElement(By.CssSelector(“.network”));
}
但是,
row.findElement()
调用从DOM和 每次查找相同的首字母

如果只在
当前元素。

我们可以得到row元素的索引,然后使用第n个子选择器选择子元素

列出表格行=
radioTable.findElements(通过.CssSelector(“tbody>tr”);
tableRows.forEach((行,索引)=>{
字符串s=row.getAttribute(“类”);
如果(s.equals(“网络”)){
currentGroup.add(row.findElement(By.CssSelector(`.network:nth child(${index+1}).network`));
}
})

它正在搜索该元素的唯一子节点。为什么您认为它不是?我不确定它为什么不在当前节点下搜索,但如果您需要在row元素下搜索,请尝试使用
xpath
作为
row.findElement(By.CssSelector(./*[@class='network'])
这里
将把行表示为当前节点..:)谢谢,它在XPATH中工作,就像你建议的那样,但我需要一些在CssSelector中工作的等价物。是否有任何东西表示为当前行?我使用的框架只支持CssSelector。不能使用XPathShunge。我们的名字发音相似。