问题描述
我设计了一个基于黄瓜量角器的自动化框架,除了 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