当我试图在第一个表中找到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。
答案 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