【问题标题】:Selenium Web driver clicking imagesSelenium Web 驱动程序单击图像
【发布时间】:2016-09-29 22:58:04
【问题描述】:
如何使用 Selenium Web 驱动程序在图像上选择并单击它?说如果它说这个
<style type="text/css"> <ul id="nav"> <li> <li> <li> <li> <li> <a href="dashboard.action">My Dashboard</a> </li> </ul>
我会用吗
driver.findElement(By.linkText("My Dashboard")).click();
还是别的什么?
【问题讨论】:
标签:
java
selenium
selenium-webdriver
qa
【解决方案1】:
如果您想单击示例中的链接,可以使用您编写的选择器、不同类型的 css 选择器(例如,By.cssSelector("#nav a")(在“导航”列表中查找链接)或By.cssSelector("a[href='dashboard.action']") (查找带有特定 href 的链接))或使用 xPath 选择器。
【讨论】:
-
我正在尝试单击一个使用 css 并且具有 ul id = "nav" 并且具有 - 我的仪表板的文本
我会在 selenium webdriver 中输入什么代码来点击它
【解决方案2】:
重要的是要有一个唯一的标识符来定位你的元素和一个会在100%的时间内触发的标识符。
例如,如果您希望链接文本在您身上发生变化,则不要寻找特定的链接文本,因为您无法保证它会 100% 起作用。
同样,如果有 30 个不同的元素具有相同的 id 标签,也不要使用它。
如果事情变得非常复杂......也就是说,如果您在一个包含许多未知变量的大页面中,请通过XPATH 查找。
最终,这实际上取决于您进入的网站的复杂程度,以及您需要完成的目标。
如需更多信息,请转至Selenium javadocs 并单击侧边栏上的 BY 以查看不同方法的列表以及如何使用它们。
【解决方案3】:
如果您需要单击带有图像的链接,最好使用显式等待来定位元素。
例子:
new WebDriverWait(driver, timeout).until(ExpectedConditions.presenceOfElementLocated(locator));