【发布时间】: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。这可能不是罪魁祸首,但升级它值得一试。