本地运行的测试通过,但 Jenkins 测试失败;为什么,我该如何解决这个问题?

Bra*_*son 5 jenkins robotframework

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

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

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

为什么有些东西可以在两个不同的操作系统上本地运行,但在 Jenkins 上却失败了?

Bry*_*ley 6

为什么有些东西可以在两个不同的操作系统上本地运行,但在 Jenkins 上却失败了?

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

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

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

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