如何使用 selenium-java 点击 href 链接

Posted

技术标签:

【中文标题】如何使用 selenium-java 点击 href 链接【英文标题】:how to click in href link with selenium-java 【发布时间】:2020-07-14 16:16:41 【问题描述】:

我正在使用 selenium-java 来自动化一些测试(它是自学的)。我卡在点击一个超链接,但这个href非常特别,因为像这样:

<a tabindex="-1" href="../../myWebPage.html"><span>My Web Page</span></a>

我的java代码是:

1.- driver.findElement(By.xpath("//a[@href='../../myWebPage.html']")).click(); 2.- driver.findElement(By.xpath("//a[@href='https://RealHost/pag1/myWebPage.html']")).click();

我使用的第二个选项是使用真实链接,但它们都不起作用。

你能帮帮我吗?

P.S:我也使用了选项driver.findElement(By.LinkText("https://RealHost/pag1/myWebPage.html")).click();,但没有成功。

谢谢大家!

【问题讨论】:

【参考方案1】:

尝试任一 xpath。

driver.findElement(By.xpath("//a[contains(@href,'/myWebPage.html')]//span[text()='My Web Page']")).click();

driver.findElement(By.xpath("//a[.//span[text()='My Web Page']]")).click();

OR css 选择器

driver.findElement(By.cssSelector("a[href*='/myWebPage.html']>span")).click();

【讨论】:

在这段代码中,driver.findElement(By.cssSelector("a[href*='/myWebPage.html']>span']")).click();, >span 是正确的还是不行? @DonGonzaloCortezMayer:对不起,错误。删除结束括号。刚刚更新。 第一个解决方案,我得到一个错误:线程“主”org.openqa.selenium.ElementNotInteractableException中的异常:元素没有显示 在交互元素之前提供一些等待。其他两个选项怎么样? new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.linkText("Cear Pago Saliente"))).click();这个很好用!!!谢谢老哥的帮助【参考方案2】:

您应该能够通过首先通过查看 DOM 并获取其 xpath 来找到其父元素来定位链接元素。 然后使用该父元素查找标签为“a”的元素

WebElement parent = findElement(By.xpath("/*path to parent element here*/"));
parent.findElement(By.tagName("a")).click();

请注意,父元素可能有多个 tagName "a" 的子元素,如果是这种情况,请使用 findElements() 获取该父元素的所有超链接的集合。然后在集合中搜索您想要的。

WebElement parent = findElements(By.xpath("/*path to parent element here*/"));
List<WebElement> elements = parent.findElements(By.tagName("a")).click();
//search the list for the correct link

您可以尝试的另一件事是通过 linkText 定位元素。

findElement(By.linkText("/*The hyperlinks text*/")).click();

希望这会有所帮助!

【讨论】:

【参考方案3】:

这对我有用:

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.linkText("My Web Page"))).click();

我在元素上添加了一个等待可点击的元素,它的工作原理

感谢大家的帮助。

再见

【讨论】:

【参考方案4】:

这适用于 IE 驱动程序,但 Chrome 失败的原因是:

过时的元素引用:元素未附加到网页

请帮忙!

【讨论】:

以上是关于如何使用 selenium-java 点击 href 链接的主要内容,如果未能解决你的问题,请参考以下文章

selenium-java web自动化测试工具

selenium-java,cookie登陆

selenium-java爬虫实现

selenium-java-2.42.2.jar与哪个版本的firefox兼容

Selenium-java-获取当前时间

selenium-java