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。我们的名字发音相似。