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

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

我能找到的东西

我很确定它与我的 Jar 文件有关。仅当我在 windows 或 linux 上使用 jar 文件时才会发生该错误。以我的 intelliJ 想法,它不会产生任何错误。现在我用 intelliJ 生成 jar 文件,但我真的不知道是什么原因造成的。我试图阅读我的依赖项,但没有任何帮助。任何帮助是极大的赞赏

我的 Java jar 的错误输出

在端口 42307 上启动 ChromeDriver 101.0.4951.41 (93c720db8323b3ec10d056025ab95c23a31997c9-refs/branch-heads/4951@{#904}) 仅允许本地连接。有关保护 ChromeDriver 安全的建议,请参阅 https://chromedriver.chromium.org/security-considerations 。 ChromeDriver 已成功启动。 2022 年 4 月 29 日晚上 8:40:21 org.openqa.selenium.remote.ProtocolHandshake createSession 信息:检测到的方言:W3C 2022 年 4 月 29 日晚上 8:40:21 org.openqa.selenium.devtools.CdpVersionFinder findNearestMatch 警告:无法找到 CDP 版本 101 的完全匹配,因此返回找到的最接近的版本: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 tho而不是直接生成了 jar

<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 one for windows 和 linux for my ubuntu 机器

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

stack overflow Unable to find an exact match for CDP version x in selenium
原文答案
author avatar

接受的答案

此错误消息...

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

...暗示 ChromeDriver 无法启动/产生新的 Browsing Contextgoogle-chrome


深潜

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

  • 假设您使用的是更新的 Google Chrome 版本 101.0。
  • 您正在使用 ChromeDriver 101.0
  • 您还使用了 Selenium **v4.1.4** ,其中发行说明提到:
  • 支持的 CDP 版本:85、99、100、101

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

但是,我坚信 Google Chrome MRimagedownloader 指向的 实例属于 **101.0** 版本,而 Google Chrome 使用的 Selenium 实例属于 **100.0**

您需要将 Google Chrome 使用的 Selenium 版本升级为 **v101.0**


答案:

作者头像

我有同样的问题,使用 maven 和 vscode,但在你写的提示后解决了它:“我很确定它与我的 Jar 文件有关。只有在我使用 jar 文件时才会发生错误windows 或 linux。以我的 intelliJ 想法,它不会产生任何错误。“

导出 jar 文件时,GUI 向我显示了一个元素列表,其中 88 个是预先选择的,包括:

  • selenium-devtools-v104-4.5.0.jar
  • selenium-devtools-v105-4.5.0.jar
  • selenium-devtools-v106-4.5.0.jar

这修复了它:我取消选中 v104 和 v105

现在我得到这个回复:

好的。 2022 年 8 月 8 日下午 6:22:38 org.openqa.selenium.devtools.CdpVersionFinder findNearestMatch 信息:找到版本 106 的确切 CDP 实现

谢谢