java - Selenium WebDriver 无法定位 Selenium IDE 可以定位的 Element

标签 java selenium junit selenium-ide selenium-webdriver

这是我没想到会遇到的问题。 我正在 Ubuntu 11 上的 eclipse 中使用 JUnit 4 编写 selenium Webdriver 测试。我一直在使用 Selenium IDE 结合 firebug 和 firepath 来确保我在 JUnit 测试中指定的 xpaths 是正确的。我遇到的问题是 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 的焦点。在选择新菜单项之前添加刷新并长时间等待效果最好。

最佳答案

因为您得到的异常是 StaleElementReferenceException ,看来你还是太快了。说明:

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

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

关于java - Selenium WebDriver 无法定位 Selenium IDE 可以定位的 Element,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13591933/

相关文章:

java - Selenium Webdriver -dragAndDrop 在 Firefox 32 中不起作用

javascript - 用于解析的 Selenium-webdriver (Ruby)

selenium - 可以在 webdriver 中使用 css 使用相对路径吗?

java - 为什么数组的负大小不是编译错误而是抛出 java.lang.NegativeArraySizeException

java - Spring Boot 作业调度程序

java - 如何通过使其不可读来隐藏我的特定 Java 源代码(单个类)?

java - 在终端中运行我的 Junit 测试

java - 使用 readNamespacedPodLog 时出现问题

java - 在一组测试用例之前仅加载一次配置

java - OutputStream 的 JUnit 测试