SessionNotCreatedException:无法启动新会话。通过 pom.xml 使用 Selenium Java 和 WebDriverManager 的响应代码 500 错误

问题描述 投票:0回答:3

我想在 chrome beta 版本上测试我的脚本,因此我安装了 chrome beta 版本,但不知何故我无法使用 Selenium Java 启动它。我在

pom.xml
文件中添加了有关 webdriver 管理器等的所有所需依赖项。我正在分享我的控制台错误和脚本。

ChromeOptions optionsBeta = new ChromeOptions();
optionsBeta.setBinary("C:\\Users\\WRP\\Downloads\\Programs\\ChromeSetup.exe");
System.setProperty("webdriver.chrome.driver", "C:\\Users\\WRP\\eclipse-workspace\\PracticeProject\\Driver\\chromedriver.exe");
WebDriver driver = new ChromeDriver(optionsBeta);
//System.setProperty("webdriver.chrome.driver", "./Driver/chromedriver.exe");
//  WebDriver driver = new ChromeDriver();
WebDriverManager.chromedriver().setup();
//WebDriverManager.chromedriver().driverVersion("104.0.5112.29").setup();
//WebDriver driver = new ChromeDriver();
WebDriverWait waits=new WebDriverWait (driver, Duration.ofSeconds(10));

错误跟踪日志:

Starting ChromeDriver 104.0.5112.29 (eff877e18f767c77fef0481a1cba402c8cbad404-refs/branch-heads/5112@{#422}) on port 55215
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
Exception in thread "main" org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Response code 500. Message: unknown error: Chrome failed to start: crashed.
  (unknown error: DevToolsActivePort file doesn't exist)
  (The process started from chrome location C:\Users\WRP\Downloads\Programs\ChromeSetup.exe is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
Build info: version: '4.3.0', revision: 'a4995e2c09*'
System info: host: 'AWAIS-PC', ip: '192.168.1.62', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '18.0.1'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Command: [null, newSession {capabilities=[Capabilities {browserName: chrome, goog:chromeOptions: {args: [], binary: C:\Users\WRP\Downloads\Prog..., extensions: []}}], desiredCapabilities=Capabilities {browserName: chrome, goog:chromeOptions: {args: [], binary: C:\Users\WRP\Downloads\Prog..., extensions: []}}}]
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:144)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:102)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:67)
    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:569)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:264)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:179)
    at org.openqa.selenium.chromium.ChromiumDriver.<init>(ChromiumDriver.java:101)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:81)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:70)
    at First_Test.Practice_First.main(Practice_First.java:29)
java selenium google-chrome selenium-chromedriver webdriver-manager
3个回答
2
投票

使用下面的 chrome 选项

options = webdriver.ChromeOptions()
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--ignore-ssl-errors=yes')
options.add_argument('--ignore-certificate-errors')

这一行对于跳过此错误非常重要

options.add_argument('--disable-dev-shm-usage')

0
投票

这个错误信息...

Exception in thread "main" org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Response code 500. Message: unknown error: Chrome failed to start: crashed.
  (unknown error: DevToolsActivePort file doesn't exist)
  (The process started from chrome location C:\Users\WRP\Downloads\Programs\ChromeSetup.exe is no longer running, so ChromeDriver is assuming that Chrome has crashed.)

...意味着 ChromeDriver 无法启动/生成新的 浏览上下文,即 会话。

您必须注意以下几件事:

  • setBinary()
    参数应用于指向二进制可执行文件,即
    chrome.exe
    安装浏览器软件后 (
    ChromeSetup.exe
    )

    optionsBeta.setBinary("C:\\location\\to\\chrome.exe");
    
  • 您可以使用以下任一不是两者都):

    • 使用System.setProperty()行下载的

      chromedriver.exe
      版本如下:

      System.setProperty("webdriver.chrome.driver", "C:\\Users\\WRP\\eclipse-workspace\\PracticeProject\\Driver\\chromedriver.exe");
      
    • WebDriverManager依赖于

      pom.xml
      并将chromedriver设置为:

      WebDriverManager.chromedriver().setup();
      

您的有效代码块将是:

  • 使用下载的ChromeDriver

    System.setProperty("webdriver.chrome.driver", "C:\\Users\\WRP\\eclipse-workspace\\PracticeProject\\Driver\\chromedriver.exe");
    ChromeOptions optionsBeta = new ChromeOptions();
    optionsBeta.setBinary("C:\\location\\to\\chrome.exe");      
    WebDriver driver = new ChromeDriver(optionsBeta);
    
  • pom.xml中使用

    Maven依赖项

    WebDriverManager.chromedriver().driverVersion("104.0.5112.29").setup();
    ChromeOptions optionsBeta = new ChromeOptions();
    optionsBeta.setBinary("C:\\location\\to\\chrome.exe");      
    WebDriver driver = new ChromeDriver(optionsBeta);
    

0
投票

使用无头模式并禁用 GUI 模式。并在 selenium 代码内的 Chromeoption 类中指定 chrome 二进制路径。

© www.soinside.com 2019 - 2024. All rights reserved.