Azure DevOps中Edge浏览器Selenium测试间歇性报SessionNotCreatedException求助
间歇性SessionNotCreatedException:无法找到msedge二进制文件
问题描述
在Azure DevOps流水线中运行基于Microsoft Edge的Selenium测试用例时,出现间歇性异常:偶尔触发SessionNotCreatedException,报错信息为:
Message: unknown error: cannot find msedge binary
未修改虚拟机内的任何版本或二进制文件,测试执行5次中有2次成功,其余均失败。
环境信息
- 系统:Windows Server 2016(amd64,版本10.0)
- Java版本:17.0.6
- WebDriver Manager版本:5.3.2
- TestNG版本:6.14.3
- Selenium版本:4.5.0
- Microsoft Edge浏览器版本:112.0.1722.58
Edge浏览器初始化代码
EdgeOptions edgeOptions = new EdgeOptions(); edgeOptions.addArguments("--remote-allow-origins=*"); if(incognito.equalsIgnoreCase("Y")) { edgeOptions.addArguments("inprivate"); } edgeOptions.setExperimentalOption("prefs",p); WebDriverManager webDriverManager = WebDriverManager.edgedriver(); webDriverManager.config().setEdgeDriverVersion("112.0.1722.58"); webDriverManager.setup(); this.driver = new EdgeDriver(edgeOptions);
异常详情
org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Response code 500. Message: unknown error: cannot find msedge binary System info: os.name: 'Windows Server 2016', os.arch: 'amd64', os.version: '10.0', java.version: '17.0.6' Driver info: org.openqa.selenium.edge.EdgeDriver Command: [null, newSession {capabilities=[Capabilities {browserName: MicrosoftEdge, ms:edgeOptions: {args: [--remote-allow-origins=*, inprivate], extensions: [], prefs: {download.default_directory: D:\VSTSAgentsWork\01\292\s\...}}}], desiredCapabilities=Capabilities {browserName: MicrosoftEdge, ms:edgeOptions: {args: [--remote-allow-origins=*, inprivate], extensions: [], prefs: {download.default_directory: D:\VSTSAgentsWork\01\292\s\...}}}}]
日志显示Microsoft Edge WebDriver 112.0.1722.58已成功启动,但仍触发异常。
排查与解决方案
显式指定Edge二进制文件路径
间歇性问题可能源于WebDriver偶尔无法正确定位Edge安装路径,可通过EdgeOptions强制指定浏览器二进制文件位置:// 根据实际安装路径调整,64位系统可能在Program Files目录下 edgeOptions.setBinary("C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe");检查Azure DevOps代理权限
确保Azure DevOps运行测试的代理服务账号拥有Edge安装目录的读取权限,避免因权限不足导致无法访问二进制文件。清理WebDriver缓存
WebDriver Manager可能存在缓存冲突,可在流水线执行前添加清理步骤,删除WebDriver缓存目录(默认路径为~/.cache/selenium)。升级依赖版本
当前使用的WebDriver Manager 5.3.2和Selenium 4.5.0存在已知兼容性问题,建议升级至:- WebDriver Manager 5.5.3及以上版本
- Selenium 4.10.0及以上版本
清理残留进程
若流水线存在并行测试任务,可能出现Edge进程未完全释放导致的资源冲突,可在测试前添加PowerShell步骤杀死残留进程:taskkill /F /IM msedge.exe /T taskkill /F /IM msedgedriver.exe /T
内容的提问来源于stack exchange,提问作者Souvik Maiti
相关产品推荐
相关产品推荐

