首页 > 解决方案 > Selenium Java - 此版本的 ChromeDriver 仅支持 Chrome 版本 81

问题描述

我得到以下异常

Exception in thread "main" org.openqa.selenium.SessionNotCreatedException: session not created: This version of ChromeDriver only supports Chrome version 81

使用此版本的 Chromedriver https://chromedriver.storage.googleapis.com/index.html?path=81.0.4044.20/

这就是我管理依赖项的方式

<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
  <groupId>org.seleniumhq.selenium</groupId>
  <artifactId>selenium-java</artifactId>
  <version>4.0.0-alpha-4</version>
</dependency>

这是我的代码:

System.setProperty("webdriver.chrome.driver", SeleniumConsts.CHROMEDRIVER);
WebDriver driver = new ChromeDriver();

我在第二行发现异常

public static final String CHROMEDRIVER = "C:\\chromedriver_win32\\chromedriver.exe";

我没有关于 chromedrive 的任何系统变量。如果我启动我的脚本 chrome 实例启动但程序崩溃所以我想我使用了正确的路径并且因为我不使用系统变量它应该是我电脑上唯一的 chromedrive 版本

我也试图关闭我的“主要用途”谷歌浏览器,但它没有改变任何东西

完全例外:

"C:\Users\KNG HOLDY\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\201.4865.12\jbr\bin\java.exe" "\"-javaagent:C:\Users\KNG HOLDY\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\201.4865.12\lib\idea_rt.jar=56986:C:\Users\KNG HOLDY\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\201.4865.12\bin\"" -Dfile.encoding=UTF-8 -classpath "\"C:\repos\LeagueRegistrator\target\classes;C:\Users\KNG HOLDY\.m2\repository\org\seleniumhq\selenium\selenium-java\4.0.0-alpha-4\selenium-java-4.0.0-alpha-4.jar;C:\Users\KNG HOLDY\.m2\repository\org\seleniumhq\selenium\selenium-api\4.0.0-alpha-4\selenium-api-4.0.0-alpha-4.jar;C:\Users\KNG HOLDY\.m2\repository\org\seleniumhq\selenium\selenium-chrome-driver\4.0.0-alpha-4\selenium-chrome-driver-4.0.0-alpha-4.jar;C:\Users\KNG HOLDY\.m2\repository\com\google\auto\service\auto-service-annotations\1.0-rc6\auto-service-annotations-1.0-rc6.jar;C:\Users\KNG HOLDY\.m2\repository\com\google\auto\service\auto-service\1.0-rc6\auto-service-1.0-rc6.jar;C:\Users\KNG HOLDY\.m2\repository\com\google\auto\auto-common\0.10\auto-common-0.10.jar;C:\Users\KNG HOLDY\.m2\repository\com\google\guava\guava\28.2-jre\guava-28.2-jre.jar;C:\Users\KNG HOLDY\.m2\repository\com\google\guava\failureaccess\1.0.1\failureaccess-1.0.1.jar;C:\Users\KNG HOLDY\.m2\repository\com\google\guava\listenablefuture\9999.0-empty-to-avoid-conflict-with-guava\listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar;C:\Users\KNG HOLDY\.m2\repository\com\google\code\findbugs\jsr305\3.0.2\jsr305-3.0.2.jar;C:\Users\KNG HOLDY\.m2\repository\org\checkerframework\checker-qual\2.10.0\checker-qual-2.10.0.jar;C:\Users\KNG HOLDY\.m2\repository\com\google\errorprone\error_prone_annotations\2.3.4\error_prone_annotations-2.3.4.jar;C:\Users\KNG HOLDY\.m2\repository\com\google\j2objc\j2objc-annotations\1.3\j2objc-annotations-1.3.jar;C:\Users\KNG HOLDY\.m2\repository\org\seleniumhq\selenium\selenium-chromium-driver\4.0.0-alpha-4\selenium-chromium-driver-4.0.0-alpha-4.jar;C:\Users\KNG HOLDY\.m2\repository\org\seleniumhq\selenium\selenium-devtools\4.0.0-alpha-4\selenium-devtools-4.0.0-alpha-4.jar;C:\Users\KNG HOLDY\.m2\repository\org\seleniumhq\selenium\selenium-http\4.0.0-alpha-4\selenium-http-4.0.0-alpha-4.jar;C:\Users\KNG HOLDY\.m2\repository\org\seleniumhq\selenium\selenium-json\4.0.0-alpha-4\selenium-json-4.0.0-alpha-4.jar;C:\Users\KNG HOLDY\.m2\repository\org\seleniumhq\selenium\selenium-edge-driver\4.0.0-alpha-4\selenium-edge-driver-4.0.0-alpha-4.jar;C:\Users\KNG HOLDY\.m2\repository\org\seleniumhq\selenium\selenium-edgehtml-driver\4.0.0-alpha-4\selenium-edgehtml-driver-4.0.0-alpha-4.jar;C:\Users\KNG HOLDY\.m2\repository\org\seleniumhq\selenium\selenium-firefox-driver\4.0.0-alpha-4\selenium-firefox-driver-4.0.0-alpha-4.jar;C:\Users\KNG HOLDY\.m2\repository\org\seleniumhq\selenium\selenium-firefox-xpi-driver\4.0.0-alpha-4\selenium-firefox-xpi-driver-4.0.0-alpha-4.jar;C:\Users\KNG HOLDY\.m2\repository\org\seleniumhq\selenium\selenium-ie-driver\4.0.0-alpha-4\selenium-ie-driver-4.0.0-alpha-4.jar;C:\Users\KNG HOLDY\.m2\repository\org\seleniumhq\selenium\selenium-opera-driver\4.0.0-alpha-4\selenium-opera-driver-4.0.0-alpha-4.jar;C:\Users\KNG HOLDY\.m2\repository\org\seleniumhq\selenium\selenium-remote-driver\4.0.0-alpha-4\selenium-remote-driver-4.0.0-alpha-4.jar;C:\Users\KNG HOLDY\.m2\repository\com\squareup\okhttp3\okhttp\4.3.0\okhttp-4.3.0.jar;C:\Users\KNG HOLDY\.m2\repository\com\squareup\okio\okio\2.4.1\okio-2.4.1.jar;C:\Users\KNG HOLDY\.m2\repository\org\jetbrains\kotlin\kotlin-stdlib-common\1.3.50\kotlin-stdlib-common-1.3.50.jar;C:\Users\KNG HOLDY\.m2\repository\org\jetbrains\kotlin\kotlin-stdlib\1.3.61\kotlin-stdlib-1.3.61.jar;C:\Users\KNG HOLDY\.m2\repository\org\jetbrains\annotations\13.0\annotations-13.0.jar;C:\Users\KNG HOLDY\.m2\repository\com\typesafe\netty\netty-reactive-streams\2.0.4\netty-reactive-streams-2.0.4.jar;C:\Users\KNG HOLDY\.m2\repository\io\netty\netty-handler\4.1.43.Final\netty-handler-4.1.43.Final.jar;C:\Users\KNG HOLDY\.m2\repository\io\netty\netty-common\4.1.43.Final\netty-common-4.1.43.Final.jar;C:\Users\KNG HOLDY\.m2\repository\io\netty\netty-buffer\4.1.43.Final\netty-buffer-4.1.43.Final.jar;C:\Users\KNG HOLDY\.m2\repository\io\netty\netty-transport\4.1.43.Final\netty-transport-4.1.43.Final.jar;C:\Users\KNG HOLDY\.m2\repository\io\netty\netty-codec\4.1.43.Final\netty-codec-4.1.43.Final.jar;C:\Users\KNG HOLDY\.m2\repository\org\reactivestreams\reactive-streams\1.0.3\reactive-streams-1.0.3.jar;C:\Users\KNG HOLDY\.m2\repository\io\opentracing\opentracing-api\0.33.0\opentracing-api-0.33.0.jar;C:\Users\KNG HOLDY\.m2\repository\net\bytebuddy\byte-buddy\1.10.6\byte-buddy-1.10.6.jar;C:\Users\KNG HOLDY\.m2\repository\org\apache\commons\commons-exec\1.3\commons-exec-1.3.jar;C:\Users\KNG HOLDY\.m2\repository\org\asynchttpclient\async-http-client\2.10.4\async-http-client-2.10.4.jar;C:\Users\KNG HOLDY\.m2\repository\org\asynchttpclient\async-http-client-netty-utils\2.10.4\async-http-client-netty-utils-2.10.4.jar;C:\Users\KNG HOLDY\.m2\repository\io\netty\netty-codec-http\4.1.42.Final\netty-codec-http-4.1.42.Final.jar;C:\Users\KNG HOLDY\.m2\repository\io\netty\netty-codec-socks\4.1.42.Final\netty-codec-socks-4.1.42.Final.jar;C:\Users\KNG HOLDY\.m2\repository\io\netty\netty-handler-proxy\4.1.42.Final\netty-handler-proxy-4.1.42.Final.jar;C:\Users\KNG HOLDY\.m2\repository\io\netty\netty-transport-native-epoll\4.1.42.Final\netty-transport-native-epoll-4.1.42.Final-linux-x86_64.jar;C:\Users\KNG HOLDY\.m2\repository\io\netty\netty-transport-native-unix-common\4.1.42.Final\netty-transport-native-unix-common-4.1.42.Final.jar;C:\Users\KNG HOLDY\.m2\repository\io\netty\netty-transport-native-kqueue\4.1.42.Final\netty-transport-native-kqueue-4.1.42.Final-osx-x86_64.jar;C:\Users\KNG HOLDY\.m2\repository\io\netty\netty-resolver-dns\4.1.42.Final\netty-resolver-dns-4.1.42.Final.jar;C:\Users\KNG HOLDY\.m2\repository\io\netty\netty-resolver\4.1.42.Final\netty-resolver-4.1.42.Final.jar;C:\Users\KNG HOLDY\.m2\repository\io\netty\netty-codec-dns\4.1.42.Final\netty-codec-dns-4.1.42.Final.jar;C:\Users\KNG HOLDY\.m2\repository\org\slf4j\slf4j-api\1.7.26\slf4j-api-1.7.26.jar;C:\Users\KNG HOLDY\.m2\repository\com\sun\activation\javax.activation\1.2.0\javax.activation-1.2.0.jar;C:\Users\KNG HOLDY\.m2\repository\org\seleniumhq\selenium\selenium-safari-driver\4.0.0-alpha-4\selenium-safari-driver-4.0.0-alpha-4.jar;C:\Users\KNG HOLDY\.m2\repository\org\seleniumhq\selenium\selenium-support\4.0.0-alpha-4\selenium-support-4.0.0-alpha-4.jar\"" org.example.App
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.
Starting ChromeDriver 81.0.4044.20 (f006328e39a9769596eb506c8841c3004b24e747-refs/branch-heads/4044@{#244}) on port 16033
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
Exception in thread "main" org.openqa.selenium.SessionNotCreatedException: session not created: This version of ChromeDriver only supports Chrome version 81
Build info: version: '4.0.0-alpha-4', revision: 'c2d955b49e'
System info: host: 'DESKTOP-89KMETV', ip: '192.168.178.55', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '11.0.6'
Driver info: driver.version: ChromeDriver
remote stacktrace: Backtrace:
    Ordinal0 [0x00805D53+2448723]
    Ordinal0 [0x00738131+1605937]
    Ordinal0 [0x0062F879+522361]
    Ordinal0 [0x005C05F3+67059]
    Ordinal0 [0x005BCD92+52626]
    Ordinal0 [0x005DC127+180519]
    Ordinal0 [0x005DBF2D+180013]
    Ordinal0 [0x005D9E5B+171611]
    Ordinal0 [0x005C1DD8+73176]
    Ordinal0 [0x005C2E50+77392]
    Ordinal0 [0x005C2DE9+77289]
    Ordinal0 [0x0074D6A7+1693351]
    GetHandleVerifier [0x008A3E16+522726]
    GetHandleVerifier [0x008A3B54+522020]
    GetHandleVerifier [0x008B8F67+609079]
    GetHandleVerifier [0x008A4686+524886]
    Ordinal0 [0x00745A8C+1661580]
    Ordinal0 [0x0074F00B+1699851]
    Ordinal0 [0x0074F173+1700211]
    Ordinal0 [0x00764FE5+1789925]
    BaseThreadInitThunk [0x74E76359+25]
    RtlGetAppContainerNamedObjectPath [0x775B7B74+228]
    RtlGetAppContainerNamedObjectPath [0x775B7B44+180]

    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$errorHandler$0(W3CHandshakeResponse.java:62)
    at org.openqa.selenium.remote.HandshakeResponse.lambda$getResponseFunction$0(HandshakeResponse.java:30)
    at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$1(ProtocolHandshake.java:126)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
    at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
    at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
    at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:543)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:128)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:75)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:139)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:582)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:216)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:136)
    at org.openqa.selenium.chromium.ChromiumDriver.<init>(ChromiumDriver.java:75)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:163)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:150)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:105)
    at org.example.App.main(App.java:15)

标签: javaselenium

解决方案


可能正如大学所说,您遇到此问题的原因是因为您拥有不同版本的 selenium chrome 驱动程序和 Chrome 浏览器。Chromedriver 和 Chrome 浏览器必须始终具有相同的版本号。

过去,我在这个问题上遇到了很多麻烦,但最近我发现了这个很大的依赖关系:https ://github.com/bonigarcia/webdrivermanager

它负责您的 chrome 驱动程序,您无需考虑版本。


推荐阅读