Ubuntu环境下TestCafe中Headless Chrome断开连接问题求助
我之前在Ubuntu环境跑TestCafe时也碰到过一模一样的问题,给你几个亲测有效的排查和解决方向:
升级浏览器与TestCafe版本:你用的Chrome 74版本太老了,TestCafe对新版本浏览器的兼容性和稳定性更好。先把Chrome更到最新稳定版,同时执行
npm update testcafe -g把TestCafe也升级到最新,老版本的适配问题是这类断开报错的常见诱因。延长浏览器超时时间:如果你的测试脚本运行周期较长,默认的超时限制可能会导致TestCafe误判浏览器断开。可以在命令里添加
--browser-timeout参数,比如:testcafe chrome:headless AbcTest.js --browser-timeout 180000这里设置的是3分钟(180000毫秒),你可以根据自己的测试实际时长调整数值。
禁用Chrome沙箱模式:Ubuntu环境下,沙箱权限问题很容易导致Headless Chrome崩溃或断开。试试给Chrome添加启动参数,命令改成:
testcafe "chrome:headless --disable-dev-shm-usage --no-sandbox" AbcTest.js这个调整在Linux环境下解决浏览器崩溃类问题的成功率很高。
排查测试脚本的内存泄漏:如果你的测试里有大量DOM操作、未及时清理的页面资源,长时间运行会导致Chrome内存占用过高挂掉。测试过程中可以用
top命令观察Chrome进程的内存变化,如果持续飙升,就要优化脚本:比如每次测试后执行await t.navigateTo('about:blank')清空页面,或者把长测试拆分成多个独立的短测试用例。确认系统资源充足:长时间测试如果占用大量CPU或内存,系统可能会主动杀掉Chrome进程。运行测试前关闭其他不必要的程序,或者给测试机器分配更多内存资源。
另外,你可以添加 --verbose 参数运行测试,输出更详细的日志,方便定位到底是哪一步操作导致的断开:
testcafe chrome:headless AbcTest.js --verbose
内容的提问来源于stack exchange,提问作者Hari Prasad L

