我正在尝试单击网页中的特定链接。基本上这是一个主页按钮。所以无论我在哪里浏览,我总是发现这个按钮是同一个位置。到目前为止,我使用driver.findElement(By.xpath("//span/ul/li/a")).click();
命令单击它,但即使 xpath 没有改变,这也不适用于所有网页。这是链接的萤火虫视图。
id 不是静态的,它会不断变化。那么我可以检测到此链接的其他方法是什么?
您可以使用By.linktext()
driver.findElement(By.linkText("Home")).click();
正如 dirkk 所说,您始终可以通过By.linkText()
选择器定位元素,尽管这可能是一个反复无常的解决方案:“home”链接文本最终可能会改变(在这种情况下,您的选择器将不再起作用),可能还有其他“home” " 页面上的链接(在这种情况下,您不一定会获得所需的元素)或“主页”链接文本在不同的语言中可能会有所不同(在这种情况下,您的选择器仅在测试英文站点时才有效)。
如果您可以控制生成的 HTML 代码,您应该尝试向此链接添加静态 ID 甚至类,并通过By.id()
orBy.cssSelector()
选择器进行查找。
如果不这样做,请尝试使用更多依赖于语义(ID 和类)而不是结构(标签层次结构)的选择器。这样你的选择器也会更稳定,也更容易理解。但最后,如果您测试无法测试的外部网站,这并不总是可能的。