我正在尝试限制WebDriver的范围,但未获得期望的结果。有人可以帮我这里发生什么事吗?
1。如果我使用以下代码,则输出为21:
WebElement table = driver.findElement(By.xpath("//div[@id='innings_1']"));
System.out.println(table.findElements(By.xpath("//div[@class='cb-col cb-col-100 cb-scrd-itms']")).size());
2。如果使用以下代码,则输出为13:
System.out.println(driver.findElements(By.xpath("//div[@id='innings_1'] //div[@class='cb-col cb-col-100 cb-scrd-itms']")).size());
我希望第一段代码的输出也应该为13,因为我限制了webdriver的范围
答案 0 :(得分:3)
您必须在xpath之前添加.
,同时限制得分,如下所示。
WebElement table = driver.findElement(By.xpath("//div[@id='innings_1']"));
System.out.println(table.findElements(By.xpath(".//div[@class='cb-col cb-col-100 cb-scrd-itms']")).size());
如果未指定.
,则findElement将尝试在整个DOM而不是当前节点上执行xpath。因此,我们可以通过在xpath的开头添加.
来限制xpath在当前节点上运行。