基于Linux节点的Selenium Grid测试稳定性问题求助
Selenium Grid在Linux下稳定运行的注意事项
针对你遇到的Linux平台Selenium Grid运行测试时出现org.openqa.selenium.NoSuchSessionException的问题,结合仅在Linux下触发的特性,整理以下关键注意事项:
- 彻底销毁WebDriver会话:
driver.close()仅关闭当前窗口,若测试中打开多窗口,会话并未终止。必须在close()后调用driver.quit(),该方法会彻底结束会话并释放Grid节点资源。Linux下资源回收机制更严格,残留会话会持续占用节点,导致后续测试无法创建新会话。 - 配置Grid节点超时参数:启动节点时添加超时配置,自动清理闲置/异常会话:
- 会话超时:
--session-timeout 300(单位秒,超时后自动回收会话) - 浏览器进程超时:Chrome配置
--chrome-options="--timeout=300000",Firefox配置--moz:firefoxOptions.args=["--timeout=300000"]
- 会话超时:
- 修正无头模式配置:Linux下无头模式是必选项,需使用兼容新版浏览器的参数:
- Chrome:添加
--headless=new(旧--headless参数在新版Chrome存在兼容性问题) - Firefox:添加
--headless
错误配置会导致浏览器进程异常退出,触发会话丢失。
- Chrome:添加
- 排查浏览器进程泄漏:Linux下WebDriver未正确销毁时,chrome/chromedriver、firefox/geckodriver进程会残留。可通过
ps aux | grep chrome或ps aux | grep firefox检查残留进程,若存在大量进程,需优化测试代码的资源释放逻辑(优先确保driver.quit()被执行)。 - 严格匹配WebDriver与浏览器版本:Linux下浏览器和对应驱动(chromedriver/geckodriver)版本必须完全一致,版本不匹配会导致会话创建后异常中断。例如Chrome 118需对应chromedriver 118.x,Firefox 119需对应geckodriver 0.33.x。
- 调整Grid节点资源限制:避免节点资源过载导致浏览器进程被系统杀死:
- 限制节点并发会话数:
--max-sessions 5(根据服务器CPU、内存配置调整) - 给节点分配足够内存,启动时设置JVM参数
-Xmx2G
- 限制节点并发会话数:
- 全局捕获会话异常:在测试代码的全局处理逻辑中,捕获
NoSuchSessionException时强制调用driver.quit(),避免残留资源影响后续测试用例。
内容的提问来源于stack exchange,提问作者chokdee
相关产品推荐
相关产品推荐

