如何使用 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 链接的主要内容,如果未能解决你的问题,请参考以下文章