Jenkins运行本地Selenium测试套件时ChromeDriver重复启动且版本不匹配
问题运行日志
Starting test execution, please wait... A total of 1 test files matched the specified pattern. Starting ChromeDriver 92.0.4515.107 (87a818b10553a07434ea9e2b6dccf3cbe7895134-refs/branch- heads/4515@{#1634}) on port 53894 Only local connections are allowed. Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe. ChromeDriver was started successfully. Starting ChromeDriver 92.0.4515.107 (87a818b10553a07434ea9e2b6dccf3cbe7895134-refs/branch- heads/4515@{#1634}) on port 53897 Only local connections are allowed. Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe. ChromeDriver was started successfully. Starting ChromeDriver 92.0.4515.107 (87a818b10553a07434ea9e2b6dccf3cbe7895134-refs/branch- heads/4515@{#1634}) on port 53896 Only local connections are allowed. Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe. ChromeDriver was started successfully. Starting ChromeDriver 92.0.4515.107 (87a818b10553a07434ea9e2b6dccf3cbe7895134-refs/branch- heads/4515@{#1634}) on port 53895 Only local connections are allowed. Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe. ChromeDriver was started successfully.
问题原因分析
- 版本不一致问题:日志中出现v92版本ChromeDriver而非你本地安装的v93,是因为Jenkins运行环境的PATH优先级与当前登录用户的PATH不同,Jenkins执行任务时优先调用了环境变量路径下存储的旧v92版本驱动;如果你测试代码中集成了WebDriverManager这类自动下载驱动的组件,也可能是组件配置固定拉取v92版本导致。
- 反复启动卡顿问题:ChromeDriver大版本必须和运行节点上的Chrome浏览器大版本完全匹配,版本不兼容会导致驱动启动后无法正常挂载浏览器进程,测试框架触发重试逻辑,就会反复拉起新的ChromeDriver实例。日志中的端口是每个ChromeDriver进程用于和Chrome浏览器通信的本地服务端口。
解决方案
- 校验Jenkins运行环境的驱动路径:在Jenkins任务的执行步骤最前添加命令,Windows节点执行
where chromedriver,Linux/macOS节点执行which chromedriver,打印出Jenkins实际调用的ChromeDriver路径,确认是否为旧的v92版本,删除该路径下的旧驱动即可。 - 匹配浏览器与驱动版本:确认测试执行节点上的Chrome浏览器大版本,下载对应大版本的ChromeDriver,保证二者版本完全一致。
- 调整驱动管理配置:如果使用了自动驱动管理组件,修改其配置使其拉取与浏览器版本匹配的驱动,或关闭自动下载逻辑,强制指定使用本地安装的对应版本驱动路径。
- 清理残留进程:在每次测试执行前添加清理步骤,Windows节点执行
taskkill /f /im chromedriver.exe /im chrome.exe,Linux/macOS节点执行pkill -9 chromedriver && pkill -9 chrome,避免旧进程和端口占用导致的异常。
内容的提问来源于stack exchange,提问作者Kody Berry
相关产品推荐
相关产品推荐

