Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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 webdriver单击网页中的链接_Java_Xpath_Selenium_Webdriver_Webpage - Fatal编程技术网

Java webdriver单击网页中的链接

Java webdriver单击网页中的链接,java,xpath,selenium,webdriver,webpage,Java,Xpath,Selenium,Webdriver,Webpage,我正在尝试单击网页中的特定链接。基本上这是一个主页按钮。所以无论我在哪里浏览,我总是发现这个按钮的位置是相同的。 现在我使用的是driver.findElement(By.xpath(“//span/ul/li/a”)。单击()命令单击此项,但即使xpath没有更改,也无法在所有网页中使用此项。这是链接的firebug视图 id不是静态的,它不断变化。那么,我还可以用什么方法检测此链接呢?您可以使用By.linktext() 您可以通过.linktext()使用 正如dirkk所说,您总是可以

我正在尝试单击网页中的特定链接。基本上这是一个主页按钮。所以无论我在哪里浏览,我总是发现这个按钮的位置是相同的。 现在我使用的是
driver.findElement(By.xpath(“//span/ul/li/a”)。单击()命令单击此项,但即使xpath没有更改,也无法在所有网页中使用此项。这是链接的firebug视图


id不是静态的,它不断变化。那么,我还可以用什么方法检测此链接呢?

您可以使用
By.linktext()


您可以通过.linktext()使用


正如dirkk所说,您总是可以通过
By.linkText()
选择器定位元素,尽管这可能是一个变化无常的解决方案:“主”链接文本最终可能会改变(在这种情况下,您的选择器将不再工作),页面上可能有其他“主”链接(在这种情况下,您不一定会获得所需的元素)或者“主页”链接文本可能在不同的语言中有所不同(在这种情况下,您的选择器仅在测试英语站点时才起作用)

如果您可以控制生成的HTML代码,则应尝试向该链接添加静态ID,甚至类,并通过
By.ID()
By.cssSelector()选择器进行查找


如果没有,请尝试使用更依赖于语义(ID和类)而不是结构(标记层次结构)的选择器。这样,您的选择器将更稳定,也更容易理解。但最终,如果您测试一个不稳定的外部网站,这并不总是可能的。

正如dirkk所说,您总是可以通过
By.linkText()
选择器来定位元素,尽管这可能是一个变化无常的解决方案:“主页”链接文本最终可能会发生变化(在这种情况下,您的选择器将不再工作),可能会有其他选择页面上的“主页”链接(在这种情况下,您不一定会获得所需的元素)或“主页”链接文本可能在不同的语言中有所不同(在这种情况下,您的选择器仅在测试英语站点时才起作用)

如果您可以控制生成的HTML代码,则应尝试向该链接添加静态ID,甚至类,并通过
By.ID()
By.cssSelector()选择器进行查找


如果没有,请尝试使用更依赖于语义(ID和类)而不是结构(标记层次结构)的选择器。这样,您的选择器将更稳定,也更容易理解。但最终,如果您测试一个不稳定的外部网站,这并不总是可能的。

使用xpath定位器会出现什么异常?使用xpath定位器会出现什么异常?
driver.findElement(By.linkText("Home")).click();