Java Selenium CI 构建运行速度比本地快得多?

Posted

技术标签:

【中文标题】Java Selenium CI 构建运行速度比本地快得多?【英文标题】:Java Selenium CI builds run much faster than local? 【发布时间】:2018-07-19 22:39:04 【问题描述】:

所以我只在 UI 测试作为 CI 的一部分运行时遇到了 StaleElementReferenceException,因此与在 Bamboo 上运行相比,我几乎不可能在本地重现。我通过查看this answer 和查看计时日志得出结论,它在 CI 构建中的运行速度比我在 IntelliJ 上运行它时快得多,因此它没有给页面足够的时间来完全加载结果。与其寻求解决方案,因为我想出了这一部分,我想知道这是否是一个有效的声明,为什么它会以这种方式执行,以及如何调试以找到问题的根源。我的本地 maven 构建实际上并不比 IntelliJ 运行快多少,但不知何故它在 Bamboo 上要快得多。

对此有何解释,以及如何在本地重现该错误?当某些 DOM 子项发生更改时,我一直在尝试在 Chrome 中设置断点,但我无法确定元素变得陈旧的时间。我有 IntelliJ 的调试器正在运行,我将寻找一个元素,存储它,逐步检查 Chrome 中的 DOM 更改,每次检查它是否中断 关于如何更好地调试/重现以及我是否走在正确轨道上的任何建议是否来自 CI 构建运行得更快?

【问题讨论】:

买一台速度更快的电脑?什么样的硬件在运行 CI 服务器? 【参考方案1】:

至于速度,可能只是CI机器比你的快。

但这无助于您调查 StaleElementReferenceException 的根本原因。为此,您应该调查异常的堆栈跟踪以及代码,以了解导致此异常的行以及原因。根据需要添加日志条目、屏幕截图和页面源以获得更多上下文,并咨询开发人员以了解从 DOM 中删除相关元素的可能原因(这就是导致 StaleElementReferenceException 的原因)。

如果您想试验解决方案以进行调试,而不是每次都提交更改并运行新构建,您可以登录构建机器并从其命令行运行测试以查看其行为方式。

【讨论】:

以上是关于Java Selenium CI 构建运行速度比本地快得多?的主要内容,如果未能解决你的问题,请参考以下文章

用Selenium IDE构建测试用例

在 Bamboo CI 上运行单个 Python Selenium 测试

如何使用 Gitlab CI 构建 Java Maven 项目?

如果我们部署了 Selenium + Java 用于测试自动化,当我们使用 Heroku 实现 CI/CD 流程时,我们会遇到任何障碍吗?

Rails项目切换到selenium后,CI无法正常执行。

CI开发的最佳实践是什么?