我是Selenium的新手,想要找到匹配xpath的节点的长度。
例如:
<html>
<body>
<table>
<tbody>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr><td></td></tr>
</tbody>
</table>
</body>
我想在Selenium中编写一个java代码来查找节点的长度。我想要长度,例如,如果我找到&#34; tr&#34; 节点,我希望它的长度为4
xpath将是.//html/body/table/tr
答案 0 :(得分:0)
您的xpath
不正确。您还应该使用复数findElements
来查找多个元素。这将返回List<WebElement>
,然后您只需致电size()
即可获得<tr>
代码的数量。尝试
int count = allocation.findElements(By.xpath("//html/body/table/tbody/tr")).size();
我提供了绝对路径,因为您提供的html中没有&t以及其他标识符,但不建议这样做。
答案 1 :(得分:0)
在java中,
int rowCount=driver.findElements(By.xpath("//table[@id='DataTable01']/tbody/tr")).size();
int columnCount=driver.findElements(By.xpath("//table[@id='DataTable01']/tbody/tr/td")).size();
你可以采取另一种方式,
List<WebElement> rows = tblData.findElements(By.tagName("tr"));
int rowCount = rows.size();
答案 2 :(得分:0)
如果您从父节点遍历,则无需放置//
。
xpath下面也适合你
/html/body/table/tbody/tr
绝对XPath 绝对XPath以根节点或正斜杠(/)开头。 使用绝对的优点是,它可以非常快速地识别元素。 这里的缺点是,如果出现任何问题或者其间添加了其他标记,则此路径将不再有效。
实施例: 如果路径我们定义为
1. html/head/body/table/tbody/tr/th
如果在主体和表格之间添加了标记,如下所示
2. html/head/body/form/table/tbody/tr/th
第一条路径不能用作
之间添加的'form'标签相对XPath
相对XPath是路径从您选择的节点开始的路径 - 它不需要从根节点开始。
以双正斜杠(//
)
语法:
//table/tbody/tr/th
使用相对xpath的优点是,你不需要提及长xpath,你可以从中间或中间开始。
这里的缺点是,识别元素需要更多时间,因为我们指定的是部分路径(精确路径)。
如果同一路径有多个元素,它将选择标识的第一个元素