我正在使用 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)我在单个测试套件中有很多测试用例,所以分成更小的测试。