Selenium运行回归自动化测试报renderer接收消息30秒超时错误如何解决
问题成因
- 版本适配存在兼容隐患:当前使用的Selenium 3.141.0发布时间较早,对Chrome 94版本的DevTools通信协议兼容性不足;Chrome和Chrome Driver仅大版本匹配,小版本存在差异,长时间运行后容易出现驱动和渲染进程通信断连。
- 启动参数配置冲突/不合理:配置了重复的
--disable-gpu参数,同时存在--start-maximized和固定窗口尺寸的冲突配置;User-Agent设置的Chrome 92版本和实际运行的Chrome 94版本不匹配,可能触发渲染层兼容性异常;高DPI缩放配置也可能导致渲染进程计算负载异常,长时间运行后无响应。 - 缺少面向长时间运行的容错配置:默认的渲染进程通信超时阈值仅30s,回归测试如果遇到页面资源多、加载慢的场景,很容易触发超时。
解决方案
1. 修正Chrome启动参数
修改后的参数参考如下:
chromeOptions.AddArgument("--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36"); // UA版本和实际Chrome对齐 chromeOptions.AddArgument("--disable-web-security"); chromeOptions.AddArgument("--disable-gpu"); chromeOptions.AddArgument("--start-maximized"); // 和固定window-size配置二选一即可 chromeOptions.AddArgument("--allow-running-insecure-content"); chromeOptions.AddArgument("--no-sandbox"); chromeOptions.AddArgument("--disable-dev-shm-usage"); // 解决共享内存不足导致渲染进程崩溃问题 chromeOptions.AddArgument("--disable-extensions"); // 禁用无关扩展降低渲染进程负载 chromeOptions.AddArgument("--ipc-connection-timeout=120000"); // 延长进程通信超时到120s // 无特殊高DPI适配需求可暂时移除以下两个配置,验证是否为缩放导致的渲染异常 // chromeOptions.AddArgument("force-device-scale-factor=0.75"); // chromeOptions.AddArgument("high-dpi-support=0.75"); return new ChromeDriver(chromeOptions);
2. 优化版本适配
- 将Chrome Driver升级到和当前Chrome完全匹配的小版本:94.0.4606.81对应驱动,消除小版本差异带来的兼容性问题
- 条件允许的话将Selenium升级到4.x版本,对高版本Chrome的通信协议兼容性更好,长时间运行的稳定性提升显著
3. 调整测试运行策略
- 给单条测试用例设置最长执行阈值,超时后主动销毁当前Chrome进程重建,避免单个进程长时间运行累积内存泄漏导致无响应
- 每运行3-5条用例后主动清理浏览器缓存、Cookie,避免缓存堆积导致页面加载卡顿触发超时
内容的提问来源于stack exchange,提问作者ValeriF21
相关产品推荐
相关产品推荐

