需要为 Protractor 降级 chromedriver 以匹配早期的 Chrome 版本

And*_*ien 2 selenium selenium-chromedriver selenium-webdriver protractor

我目前正在尝试让一些现有的 Protractor 测试为我将为其做 QA 工作的应用程序正常运行。但是,看起来我需要使用较早版本的 chromedriver 与我使用的 Chrome 版本(71.x)同步,但我不确定如何让 Protractor 使用其他版本,因为它总是下载 v76 . 为什么我需要这样做?上下文如下。

从存储库中提取代码后,我根据之前开发人员留下的说明在“/e2e”目录中进行了“npm install”,并使用“webdriver-manager update”通过 webdriver-manager 进行了更新。运行 Selenium 时,我收到“无效或损坏的 jar 文件”错误,这显然是 4.0.0-alpha-1 和 alpha-2 版本的问题,因此我将 Selenium 降级到独立版本 3.141.59。

这一直有效,直到我意识到在运行测试时,该应用程序没有将浏览器识别为 Chrome 并未能通过测试(它需要运行 Chrome),即使它确实在运行 Chrome。所以,我不得不降级我本地机器的 Chrome 版本以匹配我的更新拉取的 chromedriver 版本 - 我相信它正在运行 chromedriver v75 而我在我的本地机器上运行 v76。

一位 QA 同事告诉我,我应该运行 Chrome v71.x,因为这是我们用于发布管道的。因此,我卸载了 Chrome 并安装了 Chrome v71.x,确保禁用了自动更新。这意味着我需要获取与此匹配的 chromedriver 版本,从我在网上进行的挖掘,它似乎是 v2.46。

现在,我的核心问题。每次我尝试通过 webdriver-manager 更新内容时,它总是下载最新版本的 chromedriver (v76),我不知道如何让 Protractor 使用早期版本。我已经手动下载了 chromedriver 2.46 - 我猜我需要以某种方式将它指向这个版本,但是弄乱配置 json 文件并没有给我带来任何运气,我还没有在网上找到好的答案。

感谢任何帮助,因为我对所有这些工作方式仍然不熟悉。

作为参考,这是我尝试运行规范时弹出的错误类型:

[08:25:41] E/launcher - SessionNotCreatedError: session not created: This 
version of ChromeDriver only supports Chrome version 76
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11- 
14T08:25:53'
System info: host: 'xxxxxxxx', ip: 'xxxxxxxx', os.name: 'Windows 
8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_40'
Driver info: driver.version: unknown
Run Code Online (Sandbox Code Playgroud)

Shu*_*ain 5

你的 npm 模块将有文件夹作为 webdriver-manager。这里将出现所有二进制 ex chromedriver。

地点:

/node_modules/protractor/bin/webdriver-manager

现在执行以下步骤

  • 做 webdriver-manager 更新

  • 现在转到该文件夹​​并根据您的操作系统,即 chromedriver.exe(Windows) 删除 chromedriver 二进制文件,并将其替换为您将从此处下载的相同降级版本,确保 exe 的名称应与之前相同单击此处

立即运行您的测试

或者

要下载(例如)chromedriver 的特定版本:

webdriver-manager update --versions.chrome 2.46

webdriver-manager start --versions.chrome 2.46
Run Code Online (Sandbox Code Playgroud)