Selenium WebDriver找不到Selenium IDE可以找到的Element

时间:2012-11-27 19:51:36

标签: java selenium junit selenium-ide selenium-webdriver

这是我不希望遇到的问题。 我正在Ubuntu 11上的eclipse中使用JUnit 4编写一个selenium Webdriver测试。我一直在使用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几个月了,所以写了我的点击命令,从不碰到这个。任何人都知道是什么原因造成的?

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

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

2 个答案:

答案 0 :(得分:4)

由于您获得的例外情况是StaleElementReferenceException,您似乎还是太快了。说明:

  1. 该元素位于您正在使用的页面上。
  2. 点击某个内容,页面开始重新加载。
  3. 但在重新加载之前,WebDriver已经找到了你的错误元素(它不会因为某种原因等待之前的操作完成)。
  4. 然后页面最终重新加载,WebDriver尝试单击以前找到的元素...现在不存在,因为它在上一页(即使它现在也在那里)。
  5. 您需要等待上一个操作完成,最好等待一些操作结果。屏幕上有新内容吗?等等!

答案 1 :(得分:2)

帖子很旧,但我在搜索同一问题的答案时遇到了它。 所以我的解决方案可以帮助某人 事实证明,我在页面中有一个框架,所需的元素在该框架内。 更重要的是,当页面加载时,它不包含任何元素,只链接到框架源。 当我添加线 的 driver.switchTo.frame(0); 一切正常。