EdgeDriver启动会话失败500错误,CI环境随机触发
问题描述
启动Microsoft Edge会话时随机触发以下错误,仅在Windows 10 CI环境中出现:
Unknown Problem: Could not start a new session. Response code 500. Message: session not created
from no such execution context: loader has changed while resolving nodes
(Session info: MicrosoftEdge=114.0.1823.79)
System info: os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '11.0.15'
Driver info: org.openqa.selenium.edge.EdgeDriver
已尝试的无效方案
- 添加Edge启动参数:
--disable-dev-shm-usage、--remote-allow-origins=* - 配置系统属性:
System.setProperty("webdriver.edge.driver", "driverpath");
针对性排查与解决方案
针对CI环境的随机性特点,可尝试以下操作:
严格对齐浏览器与Driver版本:CI环境中Edge可能自动更新,导致EdgeDriver版本不匹配。建议在CI脚本中固定Edge版本,或使用
webdrivermanager自动拉取对应版本的Driver:WebDriverManager.edgedriver().setup(); EdgeDriver driver = new EdgeDriver(options);提升CI环境资源配额:随机性报错常与资源不足相关,可尝试给CI任务分配更多内存/CPU,或减少并行运行的测试用例数量。
验证启动参数注入逻辑:确保启动参数正确添加到
EdgeOptions对象中,示例代码:EdgeOptions options = new EdgeOptions(); options.addArguments("--disable-dev-shm-usage"); options.addArguments("--remote-allow-origins=*"); // CI无图形界面时,建议启用无头模式提升稳定性 options.addArguments("--headless=new"); EdgeDriver driver = new EdgeDriver(options);强制清理会话残留:CI环境可能存在未清理的浏览器进程或临时文件,测试前添加清理步骤:
- 杀掉所有
msedge.exe和msedgedriver.exe进程(Windows可执行命令:taskkill /F /IM msedge.exe /IM msedgedriver.exe) - 删除Edge缓存目录(如
C:\Users\<CI_USER>\AppData\Local\Microsoft\Edge\User Data\Temp)
- 杀掉所有
启用Driver日志定位问题:初始化Driver时开启详细日志,便于捕捉随机失败的具体原因:
System.setProperty("webdriver.edge.logfile", "./edge_driver.log"); System.setProperty("webdriver.edge.verboseLogging", "true");
内容的提问来源于stack exchange,提问作者dawge4qd

