无法使用Xpath查找表中的行数

时间:2015-06-25 05:09:28

标签: selenium xpath selenium-webdriver css-selectors

当我试图在第一个表中找到tr(class-tr-heading)的数量时,如果我使用Xpath(使用CSS Selector工作正常 - 返回1 tr),我得到2 tr

<div class="large 20 columns">
  <table class="Red"><tbody>
    <tr class="tr-heading"></tr>
    <tr></tr>
  </tbody></table>
  <table class="Red"><tbody>
    <tr class="tr-heading"></tr>
    <tr></tr>
  </tbody></table>
</div>

下面一个返回两个tr,

    WebElement tbl=dr.findElement(By.xpath("//div[@class='large 20 columns']/table[1]/tbody"));
    List<WebElement> trs=tbl.findElements(By.xpath("//tr[@class='tr-heading']"));
    System.out.println(trs.size());

以下代码返回单个tr,

WebElement tbl=dr.findElement(By.xpath("//div[@class='large 20 columns']/table[1]/tbody"));
List<WebElement> trs1=tbl.findElements(By.cssSelector("tr[class='tr-heading']"));
System.out.println(trs1.size());

似乎Xpath正在占据整个div并返回两个tr。你能告诉我为什么这个区别是什么以及我如何使用xpath。

1 个答案:

答案 0 :(得分:1)

使用点(。)作为选择当前节点

    WebElement tbl=dr.findElement(By.xpath("//div[@class='large 20 columns']/table[1]/tbody"));
    List<WebElement> trs=tbl.findElements(By.xpath(".//tr[@class='tr-heading']"));
     System.out.println(trs.size());
   //Now it will print out 1 as in the current node there is only one tr tagwith the specified class name