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