我已经为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之间有什么区别?
答案 0 :(得分:3)
//
在整个文档中找到与*[@id='u_0_7']
匹配的所有元素。
.//
在当前上下文中查找与*[@id='u_0_7']
匹配的所有元素。
在您的示例中,没有区别,因为driver.findElement(By)
具有全局上下文。
但您可以在findElement(By)
上致电WebElement
,例如
driver.findElement(By.xpath("//table")).findElement(By.xpath("//ul"));
会在整个文档中找到所有<ul>
,显然不是故意的。但是使用
driver.findElement(By.xpath("//table")).findElement(By.xpath(".//ul"));
会找到所有<ul>
个第一个找到的<table>
的子项,就像预期的那样。