【问题标题】:WebDriver unable to locate element (link/Java)WebDriver 无法定位元素(链接/Java)
【发布时间】:2012-04-27 03:34:01
【问题描述】:

我正在使用 Selenium 使用 WebDriver(最近从 RC 切换到 WebDriver)浏览一个网页,该网页有一个名为“Mail”的链接。我想点击链接,但测试用例总是失败并出现错误:

org.openqa.selenium.NoSuchElementException:无法定位元素: {"method":"link text","selector":"Mail"}

使用 Firebug 检查元素时,我得到以下 HTML:

<a href="url/New-Doc" target="_top" fahidden="false" faswid="e-switcher-mail" faprop="p-e-switcher-function-id">Mail</a>

这是试图点击链接的Java:

driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.findElement(By.linkText("Mail"));    
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);

我可以看到该元素出现在屏幕上,但测试用例仍然失败。

有谁知道我在这里可能缺少什么或找到链接元素的替代方法?

【问题讨论】:

  • 你可以试试driver.findElement(By.cssSelector("a[href='url/New-Doc']")).click();。如果这不起作用,您的链接是否嵌入在 iframe 中?还是在某种悬停菜单中?

标签: java html selenium webdriver


【解决方案1】:

到目前为止,对于此类情况,我发现的最佳解决方法是:

  • 在安装了 Selenium IDE 的情况下打开 Firefox
  • 在 Firefox 中打开测试页
  • 运行 selenium IDE,开始录制并点击链接
  • Selenium IDE 将为您提供定位目标的方法。如果您切换到相对 XPath,它应该会发挥作用(或者,在我的情况下,它总是有帮助)

【讨论】:

    【解决方案2】:

    通过 XPath 尝试。示例:

    driver.findElement(By.xPath("/a[text()='Mail']"));
    

    还值得仔细检查以确保页面上没有 iframe。

    【讨论】:

    • 你在 iframe 上是对的,需要执行 driver.switchTo().frame("MainFrame");在尝试点击链接之前,谢谢!
    • 你是iframe 评论让我很头疼。感谢您解释您是如何找到解决方案的。
    【解决方案3】:

    即使我曾经遇到过这种情况。查看您的源代码并确定您要查找的元素是否在框架内。如果是,首先切换到元素所在的框架,然后寻找元素。它对我来说是这样的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-15
      • 2016-12-10
      • 2018-09-30
      • 1970-01-01
      • 1970-01-01
      • 2014-08-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多