如何在selenium中找到具有相同xpath的匹配元素的匹配长度

时间:2016-03-31 05:26:26

标签: java selenium xpath

我是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

3 个答案:

答案 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,你可以从中间或中间开始。

这里的缺点是,识别元素需要更多时间,因为我们指定的是部分路径(精确路径)。

如果同一路径有多个元素,它将选择标识的第一个元素