【问题标题】:Selenium webdriver scripts fail on Remote machine for chrome browserSelenium webdriver 脚本在 Chrome 浏览器的远程机器上失败
【发布时间】:2016-05-03 19:10:17
【问题描述】:

每次我启动 selenium 测试用例时,很少 (5-6) 个测试用例在远程桌面上运行时失败。但是当我在本地运行时,它们绝对运行良好。我的本地和 RDP 都具有相同的 chrome 驱动程序版本、相同的 OS(win7) 和相同的浏览器版本。我在 strace 中看到以下两种错误。

1.unknown 错误:元素在点 (611, 449) 处不可点击。其他元素会收到点击 2.stale元素引用:元素未附加到页面文档

我正在使用远程wedriver new RemoteWebDriver(new URL(driverUrl), browser.getCapabilities());

我不知道为什么其中一些仅在 RDP 上失败。任何帮助将不胜感激。

【问题讨论】:

  • 在我看来,它不会以任何方式与 chrome 相关,在远程 Firefox 中你会得到同样的异常。但这只是我的猜测。

标签: google-chrome selenium-webdriver selenium-chromedriver remote-desktop


【解决方案1】:

脚本中通常存在问题。 你可以做些什么来修复1)unknown error: Element is not clickable at point (611, 449). Other element would receive the click

  • 在测试前始终运行 window.maximize()
  • 等待元素可见
  • 改进定位器,有时它可能无法点击您的想法

要解决的问题2.stale element reference: element is not attached to the page document: 不使用网络元素列表,每次使用时定位元素,通常会修复此问题。

【讨论】:

    【解决方案2】:

    当驱动程序在遥控器上运行测试时,我发现它在我的 Web 应用程序中的启动方式与在我的桌面上的启动方式不同,因为浏览器是如何设置为第一次启动的。对于浏览器来说,当它被驱动程序启动时,它看起来就像一个新用户。如果您可以在远程机器上运行测试时观察它,您可能会看到这一点。这在使用 Firefox 时尤其要害死我,我必须在后台进入配置文件才能杀死第一次运行行为。如果由于某种原因不方便观察在目标远程机器上运行的测试,您也可以尝试截屏。

    其他想法...

    在检查元素的代码中,有时时间是一个问题,请尝试休眠并重试检查元素。如果目标物理上位于其他网络较慢的地方,则时间可能会成为问题。

    【讨论】:

    • 埃尔克,感谢您的回复。我在 Remote 上看不到任何差异。它的执行方式与我的本地 .如果我不得不在代码方面说,奇怪的部分不是每次同一个测试用例失败,一次测试用例另一次另一个测试用例但是b / w我提到的2个错误并且工作正常,没有任何问题当地的 。我的 RDP 具有比我本地更高的配置并且在同一网络上。这是否可能导致测试失败?
    • 其他一些想法,不幸的是,您的机器和遥控器之间的屏幕分辨率差异可能会有所不同。如果屏幕分辨率太小并且目标元素最终离开屏幕并且未处理,则最大化,如另一篇文章中所建议的那样可能无济于事。不过,正如“始终最大化”所暗示的那样,这个概念实际上是为了使测试可重复并且每次在每台机器上的行为都相同。
    • 我遇到了同样的问题。 Firefox/chrome 在本地运行良好,但在我的 ec2 实例上调用测试时,它们在随机元素处失败。添加睡眠和最大化窗口不起作用。你是怎么解决这个问题的?我搜索了高低,没有找到有用的资源。
    猜你喜欢
    • 2017-06-03
    • 2014-08-08
    • 2018-06-08
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 2012-04-08
    • 1970-01-01
    • 2012-05-08
    相关资源
    最近更新 更多