Java 为selenium测试编写xpath及其差异
我为facebook的“注册”按钮编写了xpath,如下所示:Java 为selenium测试编写xpath及其差异,java,facebook,xpath,selenium-webdriver,Java,Facebook,Xpath,Selenium Webdriver,我为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\u 0\u 7']匹配的所有元素 /在当
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\u 0\u 7']
匹配的所有元素
/
在当前上下文中查找与*[@id='u\u 0\u 7']
匹配的所有元素
在您的示例中,没有区别,因为driver.findElement(By)
具有全局上下文
例如,您可以在WebElement
上调用findelelement(By)
driver.findElement(By.xpath("//table")).findElement(By.xpath("//ul"));
将在整个文档中找到所有的
,显然不是有意的。但是使用
driver.findElement(By.xpath("//table")).findElement(By.xpath(".//ul"));
将查找第一个找到的
的子节点的所有
,正如预期的那样。值得一提的是,不建议使用它*这确保对所有节点进行搜索。相反,我们可以在您的案例按钮中为ex指定确切的对象类型,这会更好:By.xpath(“id(u\u 0\u 7)”
,或者By.id(“u\u 0\u 7”)
我认为最好使用id作为By.id(“u\u 0\u 7”)