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();