【问题标题】:how to click in href link with selenium-java如何使用 selenium-java 点击 href 链接
【发布时间】: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();,但没有成功。

谢谢大家!

【问题讨论】:

    标签: java selenium xpath automation href


    【解决方案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 失败的原因是:

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

        请帮忙!

        【讨论】:

          猜你喜欢
          • 2022-08-11
          • 1970-01-01
          • 2015-08-18
          • 2021-12-03
          • 1970-01-01
          • 2020-08-31
          • 2021-06-20
          • 2018-02-27
          • 1970-01-01
          相关资源
          最近更新 更多