我为facebook的“注册”按钮编写了xpath,如下所示:
driver.findElement(By.xpath("//*[@id='u_0_7']")).click();
driver.findElement(By.xpath(".//*[@id='u_0_7']")).click();//there is a dot (.) before //
两者都运行良好。上面提到的两个xpath有什么区别?
最佳答案
//
查找所有匹配 *[@id='u_0_7']
的元素在整个文档中。
.//
查找所有匹配 *[@id='u_0_7']
的元素在当前情况下。
在您的示例中,没有区别,因为 driver.findElement(By)
具有全局背景。
但是你可以调用findElement(By)
在WebElement
上,例如
driver.findElement(By.xpath("//table")).findElement(By.xpath("//ul"));
会找到所有 <ul>
整个文档中都有 s ,显然不是有意的。但是使用
driver.findElement(By.xpath("//table")).findElement(By.xpath(".//ul"));
会找到所有 <ul>
是第一个找到的 child <table>
,就像它的意图一样。
关于java - 为selenium测试编写xpath以及它们之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17852097/