Java Selenium WebDriver无法找到Selenium IDE可以找到的元素

Java Selenium WebDriver无法找到Selenium IDE可以找到的元素,java,selenium,junit,selenium-ide,selenium-webdriver,Java,Selenium,Junit,Selenium Ide,Selenium Webdriver,这是我没想到会遇到的问题。 我正在Ubuntu11上的eclipse中使用JUnit4编写一个SeleniumWebDriver测试。我一直在使用Selenium IDE与firebug和firepath相结合,以确保我在JUnit测试中指定的XPath是正确的。我遇到的问题是,selenium IDE命令 command 'click' at target '//span[contains(text(),'MyTarget')]/PATHTOTARGET' 每次都会过去。但是,当我在webd

这是我没想到会遇到的问题。 我正在Ubuntu11上的eclipse中使用JUnit4编写一个SeleniumWebDriver测试。我一直在使用Selenium IDE与firebug和firepath相结合,以确保我在JUnit测试中指定的XPath是正确的。我遇到的问题是,selenium IDE命令

command 'click' at target '//span[contains(text(),'MyTarget')]/PATHTOTARGET'
每次都会过去。但是,当我在webdriver中使用以下命令时,它总是失败

driver.findElement(By.xpath("//span[contains(text(),'MyTarget')]/PATHTOTARGET")).click();
我已经使用Selenium IDE和Selenium Webdriver几个月了,所以我编写了自己的click命令,从未遇到过这种情况。有人知道这是什么原因吗

xpath在刷新时不会更改,每次都有效。我也尝试过等待页面上的所有内容加载而没有运气


edit1:这是由我们的应用程序的extJS上下文菜单的工作方式引起的问题。如果您从上下文菜单中选择一项,我们的应用程序将执行一些导致上下文菜单失去selenium焦点的工作。在选择新菜单项之前,先添加刷新,然后延长等待时间,效果最好。

由于您遇到的异常是a,因此您似乎仍然太快了。说明:

  • 元素位于您正在使用的页面上
  • 单击某个内容,页面开始重新加载
  • 但是在重新加载之前,WebDriver已经找到了您的错误元素(由于某种原因,它没有等待上一个操作完成)
  • 然后页面最终重新加载,WebDriver尝试单击以前找到的元素。。。它现在不存在了,因为它在上一页(即使它现在也在那里)

  • 您需要等待上一个操作完成,最好是等待该操作的某些结果。屏幕上有什么新东西吗?等等

    这篇文章很旧,但我在寻找同一问题的答案时偶然发现了它。 所以我的解决方案可能会有帮助。 事实证明,我在页面中有一个框架,所需的元素就在这个框架内。 更重要的是,加载页面时,它不包含任何元素,只包含指向帧源的链接。 当我添加行时 驱动程序切换到帧(0)
    一切正常。

    隐式等待设置为什么?顺便说一下,如果您被卡住了,您可以随时从
    WebDriver
    检索完整的页面源代码。谢谢您的评论!隐式等待设置为30秒。我将研究如何从WebDriver查看页面源代码。它是
    WebDriver.getPageSource()
    ,应该与
    FirefoxDriver一起使用
    getPageSource()获取页面源代码是一件非常简单的事情,但是当我保存WebDriver.getPageSource()的输出时到一个html文件,我能够找到我一直在寻找的目标。所以我一定是做错了什么。将再次查看我的等待页面加载函数。它是否会因
    NoTouchElementException
    或其他原因而失败?是的,有时我会将findElement放入try while循环中,直到找到为止。