【发布时间】:2017-01-05 09:56:18
【问题描述】:
我以为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() 只是在
当前元素。
【问题讨论】:
-
它只搜索该元素的子节点。为什么你认为不是?
-
我不确定为什么它不在当前节点下搜索,但如果您需要在行元素下搜索,请尝试使用
xpath作为row.findElement(By.CssSelector(".//*[@class = 'network']"))这里.将表示行为当前节点..:) -
谢谢,它像你建议的那样在 XPATH 中工作,但我需要在 CssSelector 中工作的等效东西。 ,是否有任何表示当前行的内容?我正在使用仅支持 CssSelector 的框架。不能使用 XPath
-
奇怪的是我们两个名字发音相似。
标签: selenium-webdriver css-selectors