Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为selenium测试编写xpath及其差异_Java_Facebook_Xpath_Selenium Webdriver - Fatal编程技术网

Java 为selenium测试编写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']匹配的所有元素 /在当

我为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']
匹配的所有元素

/
在当前上下文中查找与
*[@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”)