无论设置如何,WebDriverManager 都从默认路径中提取 chrome 浏览器版本

WebDriverManager is pulling chrome browser version from a default path regardless of settings

我已经尝试了所有我能想到的方法来让 WebDriverManager 检测我能想到的 chrome 浏览器的正确版本,但没有任何效果。我想从位于 C:\Program Files\Google\Chrome Beta\Application 的 chrome.exe 检测浏览器驱动程序版本。但是,无论我做什么,它都会运行以下命令来检测版本:

io.github.bonigarcia.wdm.versions.Shell - Running command on the shell: [cmd.exe, /C, wmic, datafile, where, name="%PROGRAMFILES(X86):\=\%\Google\Chrome\Application\chrome.exe", get, Version, /value]

到目前为止我已经尝试过:

对于以下所有内容:

sBrowserBinaryLocation = "C:\Program Files\Google\Chrome Beta\Application"; 

设置

options.setBinary(sBrowserBinaryLocation);
WebDriverManager.chromedriver().clearDriverCache().setup();

设置:

options.setBinary(sBrowserBinaryLocation);
WebDriverManager.chromedriver().clearDriverCache().arch64().setup();

设置:

options.setBinary(sBrowserBinaryLocation);
WebDriverManager.chromedriver().clearDriverCache().browserVersionDetectionCommand(sBrowserBinaryLocation + " --version").arch64().setup();

每一个都产生相同的结果

io.github.bonigarcia.wdm.versions.Shell - Running command on the shell: [cmd.exe, /C, wmic, datafile, where, name="%PROGRAMFILES(X86):\=\%\Google\Chrome\Application\chrome.exe", get, Version, /value]

它选择了非测试版 99。我如何告诉 WebDriverManager 使用“C:\Program Files\Google\Chrome Beta\Application”而不是“C:\Program Files(x86)\Google\Chrome\Application"?

虽然很棘手,但可以使用 WebDriverManager 方法完成 browserVersionDetectionCommand()。假设 Chrome Beta 在此路径中:

C:\Program Files\Google\Chrome Beta\Application\chrome.exe

...我们需要运行在shell中执行以下命令:

cmd.exe /C wmic datafile where name="%PROGRAMFILES:\=\%\Google\Chrome Beta\Application\chrome.exe" get Version /value

问题是,当 运行 在 Java 中执行此命令时,空白 space(在“Chrome Beta”文件夹中)使此命令成为被错误地解释。解决方案是使用 ~ 语法查找 Windows 路径名。您可以通过 运行ning dir /X 在 Windows shell 中发现这些名称(例如,C:\Program Files 变为 C:\PROGRA~1)。

您可以查看使用此功能的测试 here。本次测试痕迹如下:

2022-03-23 13:35:00 [main] DEBUG i.g.bonigarcia.wdm.versions.Shell.runAndWaitArray(65) -- Running command on the shell: [cmd.exe, /C, wmic, datafile, where, name="C:\PROGRA~1\GOOGLE\CHROME~1\APPLIC~1\CHROME.EXE", get, Version, /value]
2022-03-23 13:35:00 [main] DEBUG i.g.bonigarcia.wdm.versions.Shell.runAndWaitArray(69) -- Result: Version=100.0.4896.46
2022-03-23 13:35:00 [main] DEBUG i.g.b.wdm.versions.VersionDetector.getDriverVersionFromRepository(127) -- Latest version of chromedriver according to https://chromedriver.storage.googleapis.com/LATEST_RELEASE_100 is 100.0.4896.20
2022-03-23 13:35:00 [main] INFO  i.g.bonigarcia.wdm.WebDriverManager.resolveDriverVersion(1093) -- Using chromedriver 100.0.4896.20 (resolved driver for Chrome 100)
2022-03-23 13:35:00 [main] DEBUG i.g.b.wdm.cache.ResolutionCache.putValueInResolutionCacheIfEmpty(119) -- Storing resolution chrome=100 in cache (valid until 14:35:00 23/03/2022 CET)
2022-03-23 13:35:00 [main] DEBUG i.g.b.wdm.cache.ResolutionCache.putValueInResolutionCacheIfEmpty(119) -- Storing resolution chrome100=100.0.4896.20 in cache (valid until 13:35:00 24/03/2022 CET)
2022-03-23 13:35:00 [main] DEBUG i.g.bonigarcia.wdm.WebDriverManager.manage(1049) -- Driver chromedriver 100.0.4896.20 found in cache
2022-03-23 13:35:00 [main] INFO  i.g.bonigarcia.wdm.WebDriverManager.exportDriver(1148) -- Exporting webdriver.chrome.driver as C:\Users\boni\.cache\selenium\chromedriver\win320.0.4896.20\chromedriver.exe