这是我不希望遇到的问题。 我正在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的焦点。在选择新菜单项之前添加刷新然后延长等待是最好的。
答案 0 :(得分:4)
由于您获得的例外情况是StaleElementReferenceException
,您似乎还是太快了。说明:
您需要等待上一个操作完成,最好等待一些操作结果。屏幕上有新内容吗?等等!
答案 1 :(得分:2)
帖子很旧,但我在搜索同一问题的答案时遇到了它。 所以我的解决方案可以帮助某人 事实证明,我在页面中有一个框架,所需的元素在该框架内。 更重要的是,当页面加载时,它不包含任何元素,只链接到框架源。 当我添加线 的 driver.switchTo.frame(0); 强> 一切正常。