【问题标题】:Locally-run tests pass, but Jenkins tests fail; why, and how can I fix this?本地运行的测试通过,但 Jenkins 测试失败;为什么,我该如何解决这个问题?
【发布时间】:2018-04-05 18:38:26
【问题描述】:

我在 Ubuntu Linux VM 上运行了一套相当大的基于 python 的测试,其中包含更多的步骤。当我通过任意数量的方法手动(通过控制台)运行它们时,它们都可以正常运行并通过。

在我将它们移植到 Jenkins 服务器后,三十个中有四个失败了。我尝试了通常推荐的修复方法——在每次点击之前将关键字的等待时间增加到1s——所以我相当确定这不是时间问题。该网站的加载速度比在 Windows 上快很多,我知道在 Linux 上比 Jenkins 慢。

在谷歌搜索了一些答案后,我发现显然没有人提出可接受的答案,无论是在本网站还是其他 Q/A 网站上。

这是我从 Jenkins 那里收到的错误消息。

ElementNotVisibleException: Message: element not visible
  (Session info: chrome=61.0.3163.79
  (Driver info: chromedriver=2.26.436382 (70eb799289ce4c2208441fc057053a5b07ceabac),platform=Linux 4.10.0-33-generic x86_64)

WebDriverException: Message: unknown error: Cannot read property 'innerHTML' of undefined
  (Session info: chrome=61.0.3163.79
  (Driver info: chromedriver=2.26.436382 (70eb799289ce4c2208441fc057053a5b07ceabac),platform=Linux 4.10.0-33-generic x86_64)

另外两个都是element not visible 异常与第一个相同,这两个都发生在不是测试套件中第一个 Click Button 关键字的 Click Button 关键字上。第一个发生在 Click Element 关键字上,自我编写以来它一直运行良好,最后一个发生在经过验证的 JavaScript 调用以获取元素的文本。

为什么某些东西会在两个不同的操作系统上本地运行,然后在 Jenkins 上失败?

【问题讨论】:

  • 几个快速检查/建议: 1. 检查本地和 jenkins 框上的浏览器版本,您的测试用例运行是否相同? 2.您是否尝试过将本地IDE附加到jenkins box的浏览器实例进行远程调试,如果没有,您也可以尝试相同的方法。 3. 这4个test case每次都一样吗?
  • 快速回答:1) 是的。 2) 从技术上讲,我的 IDE 是一个 Shell 脚本,而不是我下载的成熟 IDE。 3) 是的。
  • 页面是全屏加载还是需要滚动页面并在远程机器上执行点击操作?
  • 页面在远程虚拟机的后台加载。
  • 我碰巧注意到异常中的一些东西让我感到困扰 - jenkins 实例上的 chromedriver 非常旧,很可能与 Chrome 61 几乎不兼容 - 最新的是 2.33。这可能不是罪魁祸首,但升级它值得一试。

标签: jenkins robotframework


【解决方案1】:

为什么某些东西会在两个不同的操作系统上本地运行,然后在 Jenkins 上失败?

  • 最常见的可能是 jenkins 系统运行速度较慢,并且您的测试在尝试与其交互之前没有高度警惕等待页面完成加载。 Jenkins 盒子经常会承受很大的负载,如果客户端和服务器都在同一个盒子上运行,那么其中一个或两个都可能导致问题。

  • 另一个原因可能是您在 jenkins 机器上运行不同版本的浏览器和/或 selenium 驱动程序。

  • 另一个原因可能是(虚拟?)显示器的分辨率不同,导致元素移动到不同的位置。

  • jenkins box 上的浏览​​器可能有不同的配置文件,导致运行不同的插件集或防病毒软件。这些可能会影响页面呈现的速度,或者可能导致覆盖屏幕部分的不需要的弹出窗口。

【讨论】:

  • 您可以在 Jenkins 和节点上以不同的用户身份运行 - 主节点与 Jenkins 服务具有相同的帐户,其他节点使用节点配置中定义的帐户,通过 SSH 运行的测试(手动运行)可能有不同用户。不同的用户,不同的配置文件和访问权限等。
  • 不再在最初应用这个问题的系统上工作,所以虽然永远不可能有一个真正的“接受”答案来解决这个问题(没有其他人有同样的问题并确认一个其中的原因),这是两年来唯一出现的答案。
猜你喜欢
  • 1970-01-01
  • 2015-03-26
  • 1970-01-01
  • 2021-06-02
  • 1970-01-01
  • 2022-12-05
  • 1970-01-01
  • 1970-01-01
  • 2012-02-17
相关资源
最近更新 更多