如何使用 Webdriver-Manager 在量角器中下载适当的 Chromedriver

问题描述

我设计了一个基于黄瓜量角器的自动化框架,除了 Webdriver-manager 之外,一切正常。每次 IT 部门更新谷歌浏览器版本时,我都需要手动更新二进制文件

当我使用命令 "webdriver-manager update --proxy=http://someproxy.com:PORT#" 时,webdriver-manager 总是下载最新的 chromdriver 二进制文件,而不是当前 Chrome 版本的兼容版本。

如果有办法自动确定 Chrome 版本并下载相应的 Chrome 二进制文件,请帮助我。

我曾尝试在其他地方搜索类似的行为和论坛,但没有一个命令有效。相反,它总是下载最新版本的 chromedriver 二进制文件,而不是兼容的二进制文件

如果您找到了解决方案,请帮助提供一些示例代码

解决方法

您可以在开始测试之前运行 sh,以确定是否需要更新 chromedriver

#!/bin/bash

# get existing chromedriver version
EXISTING_CD_VERSION=$(node_modules/.bin/chromedriver -version | egrep -o '(\d+)\.(\d+)\.(\d+)')

# get installed Google Chrome version
CHROME_VERSION=$(/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --version | egrep -o '(\d+)\.(\d+)\.(\d+)')

if [ "$EXISTING_CD_VERSION" = "$CHROME_VERSION" ]; then
    echo "ChromeDriver version matches the Google Chrome version"
else
    NEW_CD_VERSION=$(curl https://chromedriver.storage.googleapis.com/LATEST_RELEASE_$CHROME_VERSION)
    node_modules/.bin/webdriver-manager update --versions.chrome $NEW_CD_VERSION
fi

注意:上面的脚本是从 MacOS 系统获取 Google Chrome 版本。如果您使用的是 Linux,则需要将其更改为 google-chrome --version

,

https://github.com/angular/webdriver-manager/blob/legacy/docs/versions.md

webdriver-manager start --versions.chrome  87.0.4280.88

您可以使用 --versions.chrome 指定驱动程序版本

,

您实际需要做的是将本地 chrome 的版本与 chromedriver 的版本相匹配。所以

首先,找出您的 chrome 版本。从示例中它是 86.0.4240.111

然后,找出可以使用的chromedriver版本。获取浏览器的主要版本(前 3 个数字,在我们的例子中为 86.0.4240)并通过访问此 url https://chromedriver.storage.googleapis.com/LATEST_RELEASE_${CHROME_VERSION} 找到相应版本的驱动程序(输入主要浏览器版本而不是 ${CHROME_VERSION })。您会看到您正在寻找的 chromedriver 是 86.0.4240.22

然后只需更新 webdriver 指定所需的 chromedriver 版本

webdriver-manager update --gecko=false --versions.chrome $VERSION

确保用 86.0.4240.22 而不是 $VERSION


但这里可能很棘手,因为通常有 2 个量角器安装:

  • 本地
  • 全球

并且每个都有自己的 webdriver-manager。所以请确保您更新的是正确的

因此您可能需要转到它的文件夹并从该文件夹运行 npm i webdriver-manager@latest 然后 node ./bin/webdriver-manager update --gecko=false

当你更新了正确的 webdriver 时,像这样安装正确的 chromedriver

node ./bin/webdriver-manager update --gecko=false --versions.chrome $VERSION