Chrome 无法启动新会话,响应代码500

vhipe2zx  于 12个月前  发布在  Go
关注(0)|答案(3)|浏览(342)

我试图设置一个简单的程序 selenium 和运行到

org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Response code 500. Message: unknown error: cannot find Chrome binary.

请找到下面的示例代码和错误细节

@Test
    public void shouldAnswerWithTrue()
    {
        WebDriver driver = new ChromeDriver();
        driver = new ChromeDriver();

        driver.manage().window().maximize();
        driver.manage().deleteAllCookies();
        driver.manage().timeouts().pageLoadTimeout(40, TimeUnit.SECONDS);
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        driver.get("https://www.google.com/");

        driver.findElement(By.name("q")).sendKeys("YouTube");
        WebElement searchIcon = driver.findElement(By.name("btnK"));
        searchIcon.click();
        assertTrue( true );
    }

运行上述程序后,我注意到以下错误:

Aug 02, 2023 9:56:56 PM org.openqa.selenium.manager.SeleniumManager lambda$runCommand$1
WARNING: The chromedriver version (96.0.4664.45) detected in PATH at /usr/local/bin/chromedriver might not be compatible with the detected chrome version (115.0.5790.114); currently, chromedriver 115.0.5790.102 is recommended for chrome 115.*, so it is advised to delete the driver in PATH and retry
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Response code 500. Message: session not created: This version of ChromeDriver only supports Chrome version 96
Current browser version is 115.0.5790.114 with binary path /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
ws51t4hk

ws51t4hk1#

由于您使用的是selenium v4.11.1,因此不需要使用System.setProperty手动设置chromedriver.exe路径,也不需要任何第三方工具(如WebDriverManager)。Selenium内置了一个名为SeleniumManager的工具,可以自动管理驱动程序。

**关于您更新的错误:**您的代码没有问题,selenium应该下载并使用与您的Chrome浏览器版本(v115)匹配的最新chromedriver.exe。不知何故,它仍然在使用v96驱动程序。
**解决方案:**只需该高速缓存中删除旧驱动(v96)即可。即从该路径(usr/local/bin/chromedriver)。然后让Selenium以编程方式下载最新的驱动程序。这应该可以解决问题。

ioekq8ef

ioekq8ef2#

刚刚添加了一条新的警告消息,以便通知用户删除路径中冲突的驱动程序版本:https://github.com/SeleniumHQ/selenium/blob/fbfa5d26ce96ca067d62b6921915e640498e3b09/rust/src/lib.rs#L496
在确定您的版本后,它将打印一条如下消息:The chromedriver version (114.0.5735.90) detected in PATH at /usr/local/bin/chromedriver might not be compatible with the detected chrome version (115.0.5790.114); currently, chromedriver 115.0.5790.170 is recommended for chrome 115.*, so it is advised to delete the driver in PATH and retry(假设您没有屏蔽警告)
一旦这些冲突的版本被删除,Selenium Manager在Java中调用WebDriver driver = new ChromeDriver();时,默认情况下会自动将驱动程序下载到~/.cache/selenium

f45qwnt8

f45qwnt83#

此错误消息...

Aug 02, 2023 9:56:56 PM org.openqa.selenium.manager.SeleniumManager lambda$runCommand$1
WARNING: The chromedriver version (96.0.4664.45) detected in PATH at /usr/local/bin/chromedriver might not be compatible with the detected chrome version (115.0.5790.114); currently, chromedriver 115.0.5790.102 is recommended for chrome 115.*, so it is advised to delete the driver in PATH and retry
...
...
org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Response code 500. Message: session not created: This version of ChromeDriver only supports Chrome version 96
Current browser version is 115.0.5790.114 with binary path /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

...意味着您通过System.setProperty()行的路径包含ChromeDriverv96.0.4664.45,它是 oldancient,其中google-chromev115.0

使用Selenium Manager

当你使用Seleniumv4.11.0 时,你可以删除这行代码:

System.setProperty("webdriver.chrome.driver","//Users//user//year//TestSelenium//src//test//java//org//example//chromedriver");

另外,您需要从 /usr/local/bin/ 中删除ChromeDriverv96.0.4664.45,这样现在集成了 SeleniumSelenium Manager就可以在后台静默下载匹配的ChromeDriver并执行测试。
您的有效代码块将是:

WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();
driver.manage().deleteAllCookies();
driver.manage().timeouts().pageLoadTimeout(40, TimeUnit.SECONDS);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get("https://www.google.com/");

相关问题