使用Selenium Java启动Edge浏览器时遇SessionNotCreatedException错误求助
Selenium Java启动Edge浏览器崩溃问题解决
问题场景
尝试通过以下Selenium Java代码启动Edge浏览器:
ChromeOptions chromeOptions = new ChromeOptions(); chromeOptions.setBinary("C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe"); chromeOptions.setExperimentalOption("useAutomationExtension", false); chromeOptions.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation")); if (browser.equals("chrome")) { WebDriverManager.chromedriver().setup(); tlDriver.set(new ChromeDriver()); } else if (browser.equals("firefox")) { WebDriverManager.firefoxdriver().setup(); tlDriver.set(new FirefoxDriver()); } else if (browser.equals("InternetExplorerDriver")) { WebDriverManager.edgedriver().setup(); tlDriver.set(new EdgeDriver(chromeOptions)); } else { System.out.println("Please pass the correct browser value: " + browser); }
错误现象
运行后抛出SessionNotCreatedException,核心错误提示:
unknown error: Microsoft Edge failed to start: crashed.
(unknown error: DevToolsActivePort file doesn't exist)
(The process started from msedge location C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe is no longer running, so msedgedriver is assuming that msedge has crashed.)
完整错误栈:
@sanity Scenario Outline: MYTIP - Customer JTG Scenario # src/test/java/features/Features/sanity.feature:22 Starting Microsoft Edge WebDriver 103.0.1264.77 (2b250f2585e4f7418e51e230b93685cdc0ed9db5) on port 62823 To submit feedback, report a bug, or suggest new features, please visit https://github.com/MicrosoftEdge/EdgeWebDriver Only local connections are allowed. Please see https://aka.ms/WebDriverSecurity for suggestions on keeping Microsoft Edge WebDriver safe. Microsoft Edge WebDriver was started successfully. [1660649521.964][WARNING]: Deprecated Microsoft Edge option is ignored: useAutomationExtension [1660649521.965][WARNING]: Deprecated Microsoft Edge option is ignored: useAutomationExtension org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Response code 500. Message: unknown error: Microsoft Edge failed to start: crashed. (unknown error: DevToolsActivePort file doesn't exist) (The process started from msedge location C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe is no longer running, so msedgedriver is assuming that msedge has crashed.) Build info: version: '4.1.2', revision: '9a5a329c5a' System info: host: 'EQ-EQ6296022', ip: '10.225.5.135', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_202' Driver info: org.openqa.selenium.edge.EdgeDriver Command: [null, newSession {capabilities=[Capabilities {ms:edgeOptions: {args: [], binary: C:\Program Files (x86)\Micr..., excludeSwitches: [enable-automation], extensions: [], useAutomationExtension: false}}, Capabilities {browserName: chrome, goog:chromeOptions: {args: [], binary: C:\Program Files (x86)\Micr..., excludeSwitches: [enable-automation], extensions: [], useAutomationExtension: false}}], desiredCapabilities=Capabilities {browserName: chrome, goog:chromeOptions: {args: [], binary: C:\Program Files (x86)\Micr..., excludeSwitches: [enable-automation], extensions: [], useAutomationExtension: false}, ms:edgeOptions: {args: [], binary: C:\Program Files (x86)\Micr..., excludeSwitches: [enable-automation], extensions: [], useAutomationExtension: false}}}] at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126) at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:84) at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:62) at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:156) at org.openqa.selenium.remote.service.DriverCommandExecutor.invokeExecute(DriverCommandExecutor.java:167) at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:142) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:558) at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:245) at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:161) at org.openqa.selenium.chromium.ChromiumDriver.<init>(ChromiumDriver.java:108) at org.openqa.selenium.edge.EdgeDriver.<init>(EdgeDriver.java:52) at org.openqa.selenium.edge.EdgeDriver.<init>(EdgeDriver.java:59) at qa.factory.DriverFactory.init_driver(DriverFactory.java:62) at stepDefinations.Hooks.launchBrowser(Hooks.java:37)
修复方案
1. 替换ChromeOptions为Edge专属配置类
针对Edge浏览器,应使用EdgeOptions而非ChromeOptions,避免兼容性冲突。同时useAutomationExtension参数已被Edge弃用,可直接移除。
2. 修正浏览器判断条件
原代码中判断Edge的条件错误(使用了InternetExplorerDriver),需改为匹配实际传入的浏览器标识,比如"edge"。
3. 添加关键启动参数
添加--remote-debugging-port和--no-sandbox参数,解决DevToolsActivePort文件缺失问题:
--remote-debugging-port:指定调试端口,确保Driver能连接到浏览器实例--no-sandbox:关闭沙箱模式,避免权限导致的启动失败
4. 确保Driver与浏览器版本匹配
WebDriverManager通常会自动匹配版本,若仍有问题,可手动指定浏览器版本:
WebDriverManager.edgedriver().browserVersion("103.0.1264.77").setup();
修改后的完整代码
EdgeOptions edgeOptions = new EdgeOptions(); edgeOptions.setBinary("C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe"); edgeOptions.addArguments("--remote-debugging-port=9222"); edgeOptions.addArguments("--no-sandbox"); edgeOptions.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation")); if (browser.equals("chrome")) { WebDriverManager.chromedriver().setup(); tlDriver.set(new ChromeDriver()); } else if (browser.equals("firefox")) { WebDriverManager.firefoxdriver().setup(); tlDriver.set(new FirefoxDriver()); } else if (browser.equals("edge")) { WebDriverManager.edgedriver().setup(); tlDriver.set(new EdgeDriver(edgeOptions)); } else { System.out.println("Please pass the correct browser value: " + browser); }
内容的提问来源于stack exchange,提问作者gaurav kumar
相关产品推荐
相关产品推荐

