无法在 selenium 中找到与 CDP 版本 x 完全匹配的项

Unable to find an exact match for CDP version x in selenium

嘿嘿 所以我最近完成了一个使用 selenium 访问网站并将其特定部分下载为图像的小脚本。除了使用硒,我没有找到任何其他方法。我对使用这个 api 很陌生。现在脚本可以在我的 windows 和我的 linux 机器上运行。但是我有一个我没有真正理解的奇怪错误。根据我看到的其他 posts,我知道为什么会发生错误,但我三重检查了我的所有版本是否匹配。下面我将 post 我使用的所有版本和脚本本身。重要的是脚本可以正常工作并按预期进行屏幕截图,但警告仍然可能不是一件好事,对吧? 我没有办法修复它

我能找到的东西

我很确定它与我的 Jar 文件有关。仅当我在 windows 或 linux 上使用 jar 文件时才会发生此错误。根据我的智能想法,它不会产生任何错误。现在我用 intelliJ 生成了 jar 文件,我真的不知道是什么导致了这个。我试图读取我的依赖项,但没有任何帮助。非常感谢任何帮助

我的 Java jar

的错误输出

Starting ChromeDriver 101.0.4951.41 (93c720db8323b3ec10d056025ab95c23a31997c9-refs/branch-heads/4951@{#904}) on port 42307 Only local connections are allowed. Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe. ChromeDriver was started successfully. Apr 29, 2022 8:40:21 PM org.openqa.selenium.remote.ProtocolHandshake createSession INFO: Detected dialect: W3C Apr 29, 2022 8:40:21 PM org.openqa.selenium.devtools.CdpVersionFinder findNearestMatch WARNING: Unable to find an exact match for CDP version 101, so returning the closest version found: 100 Apr 29, 2022 8:40:21 PM org.openqa.selenium.devtools.CdpVersionFinder findNearestMatch INFO: Found CDP implementation for version 101 of 100

我的一部分pom.xml。我用 intelliJ 生成了 jar 而不是直接用 maven

<properties>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
</properties>

<dependencies>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>4.1.4</version>
    </dependency>
</dependencies>

脚本中的代码片段

    System.setProperty("webdriver.chrome.driver", chromedriverPath);
    ChromeOptions options = new ChromeOptions();
    options.addArguments("--start-maximized", "--headless", "--window-size=2560,1440","--ignore-certificate-errors","--disable-extensions","--disable-dev-shm-usage");
    options.addArguments("--log-level=3");
    WebDriver driver = new ChromeDriver(options);
    driver.get("somewebsiteurl (placeholder)" + code);
我的 ubuntu 机器上的

Chrome 版本(windows 上的版本相同)

➜  MRimagedownloader google-chrome --version                                                          
Google Chrome 101.0.4951.41

这是我使用的chromedriver版本。当然 windows 一个用于 windows,linux 用于我的 ubuntu 机器

https://chromedriver.storage.googleapis.com/index.html?path=101.0.4951.41/

这个错误信息...

Apr 29, 2022 8:40:21 PM org.openqa.selenium.devtools.CdpVersionFinder findNearestMatch WARNING: Unable to find an exact match for CDP version 101, so returning the closest version found: 100 
Apr 29, 2022 8:40:21 PM org.openqa.selenium.devtools.CdpVersionFinder findNearestMatch INFO: Found CDP implementation for version 101 of 100

...意味着 was unable to initiate/spawn a new Browsing Context i.e.


深入探讨

您的主要问题是您使用的二进制文件版本之间不兼容,如下所示:

  • 推测您正在使用更新的 Google Chrome 版本 101.0.
  • 您正在使用 Chrome驱动程序 101.0
  • 您还在使用 v4.1.4 发行说明中提到:
  • Supported CDP versions: 85, 99, 100, 101

一切似乎都完美同步,理想情况下应该开箱即用。

但是,我坚信 Google Chrome 的实例由 MRimagedownloader 指出是 101.0 的版本,其中使用 Google Chrome 的实例Selenium 的版本是 100.0.

您需要将Selenium使用的GoogleChrome版本升级到v101.0.