当 运行 Protractor 测试时,ChromeDriver 和 Chrome 之间的版本不匹配,但没有可用的更新

Version mismatch between ChromeDriver & Chrome when running Protractor tests, but no update available

我正在尝试 运行 在我的 Angular 应用程序上进行 Protractor 测试,但我遇到了一个问题,我的 ChromDriver 版本与我的 Chrome 版本不匹配。

我能够 运行 webdriver-manager start 没问题,但是当我尝试 运行 我的测试时,我收到此错误消息:

SessionNotCreatedError: session not created: This version of ChromeDriver only supports Chrome version 85 Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'

我检查了我的 Chrome 版本,那是版本 84。但是当我尝试更新 Chrome 时,它说我的版本是最新的。

所以我有两个问题:

(1) 为什么我无法使用 Chrome 的最新版本 (85)?

(2) 有什么方法可以降级我的 webdriver 以便它选择 Chrome 的 84 版?

我在这里也回答了这个问题: https://github.com/angular/protractor/issues/5460 最简单的修复方法是使用:

webdriver-manager update --versions.chrome=84.0.4147.30
webdriver-manager start --versions.chrome=84.0.4147.30

更新并启动 webdriver 服务器。这迫使版本保持在 84。我认为添加了 chromedriver 的 v85 并标记为最新(你可以看到这个 here),这迫使 webdriver-manager 开始下载版本 85(它默认下载最新版本)。

如果您通常不使用 webdriver-manager start 启动 webdriver-manager 服务器。这是您可以尝试的另一种解决方案,我也在 webdriver-manager issue 376

上的讨论中发布了该解决方案

这是复制的解决方法(这只是权宜之计,因为显然我们不想对版本进行硬编码):

  1. 我们安装了 webdriver-manager 作为项目依赖项 (npm install --save-dev webdriver-manager)

  2. 我们在 运行 测试之前调用 webdriver-manager update --versions.chrome 84.0.4147.30。这将在 ./node_modules/webdriver-manager/selenium/ 中安装 84 chromedriver 版本。 (我们刚刚在 package.json 中将其作为 npm 脚本)

  3. 然后我们更新 protractor.conf 文件以在 exports.config 的根目录中包含此行:chromeDriver:"./node_modules/webdriver-manager/selenium/chromedriver_84.0.4147.30.exe"**

Protractor 仍然安装 chromedriverr 85,但它将使用 84 版本。

** 在我们的例子中,我们 运行 在 docker 中测试量角器,但主要在 windows 上开发。所以我更新了 protractor.conf 以包含此行,以便它可以在以下任一情况下工作: chromeDriver: process.platform === "win32" ? "./node_modules/webdriver-manager/selenium/chromedriver_84.0.4147.30.exe" : "./node_modules/webdriver-manager/selenium/chromedriver_84.0.4147.30"