1

我正在使用 NightwatchJS v 1.1.11 和 Selenoid 运行 UI 测试

selenoid 托管在 t2.micro EC2 实例上(评估阶段因此使用 t2.micro)。

测试在测试过程中随机失败,主要原因有两个:

1)socket挂起异常

13:10:05 测试/readOnlyProduction/palette.js 发布http://xx.xx.xx.xx:4444 /wd/hub/session/87f6eb1b0b3369ba93bb9ce8c548fa89/element/0.46204216593315195-1/点击 - ECONNRESET

13:10:05 测试/readOnlyProduction/palette.js 错误:套接字挂断

13:10:05 测试/readOnlyProduction/palette.js at createHangUpError (_http_client.js:342:15)

13:10:05 在 Socket.socketCloseListener 测试/readOnlyProduction/palette.js (_http_client.js:377:23)

13:10:05 测试/readOnlyProduction/palette.js 运行 .clickElement() 协议操作时出错:发生未知错误。

2) 会话超时或未找到

13:11:06 测试/readOnlyProduction/palette.js 运行 .locateMultipleElements() 协议操作时出错:会话超时或未找到

测试是由 Jenkins 在 EC2 中针对 selenoid 运行触发的,但是当 selenoid 托管在本地并且在本地触发测试时会观察到类似的异常。

最重要的是,当测试并行运行时会发生这种情况,而相同的测试在一次运行一个时可以正常工作。

到目前为止尝试跟随,但到目前为止没有运气。

1) 在 nightwatch.json 中添加这个

“request_timeout_options”:{“超时”:100000,“retry_attempts”:3}

2)我在单个测试套件中有很多测试用例,所以分成更小的测试。

4

1 回答 1

0

要检查的几件事:

1)检查你的VM是否有足够的计算资源(CPU、内存、磁盘)。这通常可以使用 AWS CloudWatch 进行验证(更多内容)。我们的建议是从每个 CPU 内核约 1.5-2 个浏览器开始,为每个并行运行的浏览器配置 1 Gb RAM。

2) 尝试增加 Selenoid 会话超时(默认为 1 分钟)。这可以通过以下功能轻松完成:

sessionTimeout: "2m"

3) 检查您没有任何网络连接问题,例如被防火墙规则阻止的 JS 和 CSS 等静态页面资源。

于 2019-08-02T17:00:39.480 回答