【问题标题】:Session not created, This version of ChromeDriver only supports Chrome version 74 [duplicate]未创建会话,此版本的 ChromeDriver 仅支持 Chrome 版本 74 [重复]
【发布时间】:2020-04-09 15:13:57
【问题描述】:

在我的机器上,Chrome 浏览器的版本是 78.0.3904.108。

以下是我用来在 chrome 浏览器中运行 selenium 脚本的代码。

System.setProperty("webdriver.chrome.driver", "C:\\Users\\ChampWk21\\Downloads\\chromedriver_win32\\chromedriver.exe");
WebDriver driver = new ChromeDriver();

以下是我尝试运行代码时遇到的异常:

Starting ChromeDriver 74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}) on port 27833
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 74
  (Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Windows NT 10.0.17134 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 1.66 seconds
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:48'
System info: host: 'DESKTOP-BHL4HJ3', ip: '192.168.1.16', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_211'
Driver info: driver.version: ChromeDriver
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
    at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$errorHandler$0(JsonWireProtocolResponse.java:54)
    at org.openqa.selenium.remote.HandshakeResponse.lambda$getResponseFunction$0(HandshakeResponse.java:30)
    at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:126)
    at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
    at java.util.Spliterators$ArraySpliterator.tryAdvance(Unknown Source)
    at java.util.stream.ReferencePipeline.forEachWithCancel(Unknown Source)
    at java.util.stream.AbstractPipeline.copyIntoWithCancel(Unknown Source)
    at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
    at java.util.stream.FindOps$FindOp.evaluateSequential(Unknown Source)
    at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
    at java.util.stream.ReferencePipeline.findFirst(Unknown Source)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:128)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:74)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:181)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:168)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:123)
    at WDSel.main(WDSel.java:12)

我开发了一个 UI 测试框架。而这个错误是由于chrome驱动版本与Chrome浏览器不兼容而发生的。所以我必须使用适合当前版本的Chrome浏览器的chrome驱动版本。

我的问题是,当 Chrome 浏览器的版本不时更改时,我们是否必须下载适合 Chrome 浏览器确切版本的 chrome 驱动程序。是不是没有其他办法处理。特别是在使用框架的时候,我们能不能实现一种自动更新驱动程序的方法,而不是手动下载驱动程序并设置路径。

谢谢。

【问题讨论】:

  • 检查你的 google chrome 浏览器版本并下载兼容的 chromedriver.exe

标签: java selenium selenium-webdriver selenium-chromedriver ui-automation


【解决方案1】:

您可以使用WebDriverManager 自动下载正确的驱动程序。它会为您使用的浏览器版本下载正确的驱动程序版本。

我已经在 80 多台主机上使用 Chrome 自动更新超过一年了,它可以正常工作。


只需在初始化 ChromeDriver 之前使用以下行(也适用于其他驱动程序):

WebDriverManager.chromedriver().setup();
WebDriver driver = new ChromeDriver();

最好使用 Gradle 或 Maven 来包含该库。

Maven

<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>3.7.1</version>
    <scope>test</scope>
</dependency>

分级

dependencies {
    testCompile("io.github.bonigarcia:webdrivermanager:3.7.1")
}

其他语言也有类似的库,例如蟒蛇。

【讨论】:

  • 感谢@AndiCover 回答这个问题。我尝试了这个,它解决了上述问题,但现在我得到了一种不同的异常,如下所示。
  • [main] WARN io.github.bonigarcia.wdm.WebDriverManager - The driver version for Google Chrome 78 is unknown ... trying with latest [main] INFO io.github.bonigarcia.wdm.WebDriverManager - Reading https://chromedriver.storage.googleapis.com/ to seek chromedriver [main] INFO io.github.bonigarcia.wdm.WebDriverManager - Latest version of chromedriver is 79.0.3945.36 [main] INFO io.github.bonigarcia.wdm.Downloader - Downloading https://chromedriver.storage.googleapis.com/79.0.3945.36/chromedriver_win32.zip
  • 能否请您分享您的专业知识。谢谢
  • 请确保使用最新版本的WebDriverManager。
猜你喜欢
  • 2019-08-07
  • 2020-09-16
  • 1970-01-01
  • 2020-04-13
  • 2019-11-02
  • 1970-01-01
  • 1970-01-01
  • 2020-06-30
相关资源
最近更新 更多