我正在使用nodejs和nighwatch进行测试自动化的项目。这里的问题是测试不可靠,并给出很多误报。我尽一切努力使他们稳定并仍然遇到错误。我浏览了一些博客,如https://bocoup.com/blog/a-day-at-the-races,并做了一些代码重构。有没有人有一些建议来解决这个问题。在这一刻我有两个选择,要么我用Java重写代码(从解决方案中删除nodejs和nightwatch,因为我更喜欢Java和Javascript,大多数情况下,要与Javascript的非阻塞性质斗争)快照/审查应用程序日志/一次运行一个测试。测试服务器上的硒测试随机失败
测试环境: -
- 服务器-Linux
- 显示 - 帧缓冲
- 总VM的-9硒节点并行运行测试。
- 浏览器 - 铬 ,我得到的是没有找到元素错误的
类型。大多数情况下,页面加载后测试都会失败。我已经为超时设定了80秒,所以时间不会成问题。测试并行运行,但在单独的虚拟机上运行,所以我不知道它是否可以成为问题。
编辑1: - 正在研究此问题以了解根本原因。我做了以下事情以消除随机失败: - a。添加--suiteRetries以重试失败的案例。 b。通过错误截图和DOM源。一切似乎都很好。 c。用显式等待代替了browser.pause
同时在调试时我观察到一个问题,也许这是导致随机故障的问题。下面的代码片段
for (var i = 0; i < apiResponse.data.length; i++) {
var name = apiResponse.data[i];
browser.useXpath().waitForElementVisible(pageObject.getDynamicElement("@topicTextLabel", name.trim()), 5000, false);
browser.useCss().assert.containsText(
pageObject.getDynamicElement("@topicText", i + 1),
name.trim(),
util.format(issueCats.WRONG_DATA)
);
}
我加入了XPath的检查来验证,如果我在等待能有这样的文字出现。我观察到可见断言正在通过,但在接下来的断言中,@topicText将作为之前的值或为null。这是一个间歇性问题,但在测试服务器上频繁发生。
您可以与错误堆栈跟踪一起分享您的代码试用吗? – DebanjanB
“超时80秒”是什么意思?你是否执行了一些明确的等待,你在页面中定位的第一个元素,在80秒后失败,它不存在?或者你总是等待80秒? – danidiaz
@danidiaz - 是的,我正在执行显式等待,最大超时时间为80秒。 –