所以只有当UI测试作为CI的一部分运行时,我才遇到StaleElementReferenceException,因此与在Bamboo上运行时相比,我几乎不可能在本地重现。我通过看到这个答案并查看计时日志得出结论,它在 CI 构建中的运行速度比我在 IntelliJ 上运行它时快得多,因此它没有给页面足够的时间来完全加载结果。而不是要求解决方案,因为我弄清楚了这部分,我想知道这是否是一个有效的声明,为什么它以这种方式执行以及调试以找到问题的根源的方法。我的本地 maven 构建实际上并不比 IntelliJ 运行快多少,但不知何故,它在 Bamboo 上要快得多。
对此有任何解释,以及我如何在本地重现错误?我一直试图在某些 DOM 子元素发生变化时在 Chrome 中设置断点,但我无法确定元素过时的时间。我正在运行 IntelliJ 的调试器,我将寻找一个元素,存储它,逐步完成 Chrome 中的 DOM 更改,每次检查它是否中断 关于如何更好地调试/重现以及我是否在正确的轨道上,它来自运行更快的 CI 构建?
至于速度,可能只是CI机器比你的快。
但这并不能帮助您调查 StaleElementReferenceException 的根本原因。为此,您应该调查异常的堆栈跟踪以及代码,以了解导致此异常的行及其原因。根据需要添加日志条目、屏幕截图和页面源代码以获取更多上下文,并咨询开发人员以了解从 DOM 中删除相关元素的可能原因(这就是导致 StaleElementReferenceException 的原因)。
如果要试验解决方案以进行调试,而无需每次提交更改并运行新的生成,则可以登录到生成计算机并从其命令行运行测试以查看其行为。