我试图设置一个简单的程序 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
3条答案
按热度按时间ws51t4hk1#
由于您使用的是selenium
v4.11.1
,因此不需要使用System.setProperty
手动设置chromedriver.exe
路径,也不需要任何第三方工具(如WebDriverManager
)。Selenium内置了一个名为SeleniumManager
的工具,可以自动管理驱动程序。**关于您更新的错误:**您的代码没有问题,selenium应该下载并使用与您的Chrome浏览器版本(
v115
)匹配的最新chromedriver.exe
。不知何故,它仍然在使用v96
驱动程序。**解决方案:**只需该高速缓存中删除旧驱动(
v96
)即可。即从该路径(usr/local/bin/chromedriver)。然后让Selenium以编程方式下载最新的驱动程序。这应该可以解决问题。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
。f45qwnt83#
此错误消息...
...意味着您通过
System.setProperty()
行的路径包含ChromeDriverv96.0.4664.45,它是 old 和 ancient,其中google-chrome是 v115.0。使用Selenium Manager
当你使用Seleniumv4.11.0 时,你可以删除这行代码:
另外,您需要从
/usr/local/bin/
中删除ChromeDriverv96.0.4664.45,这样现在集成了 Selenium 的Selenium Manager就可以在后台静默下载匹配的ChromeDriver并执行测试。您的有效代码块将是: