Chromedriver

Appium 支持对基于 Chrome 内核的 H5 应用(混合应用)或者网页(Chrome 中的网页或者内建的浏览器中的网页)进行自动化。Appium 管理维护着一个 Chromedriver 实例,当需要的时候,使用代理模式,将命令传递给这个实例。这和最新版本的 Chromedriver是绑定的。我们可以通过 npm 包来安装appium-chromedriver。(Github: appium-chromedriver)

不幸的是,每次 Chromedriver 升级,支持的 Chrome 的最小版本都会升级,这就导致了老设备上经常无法在绑定的版本上自动化。在 Appium 的服务端就会有这样的错误日志:

An unknown server-side error occurred while processing the command.
Original error: unknown error: Chrome version must be >= 55.0.2883.0

为了解决这个问题,Appium 可以指定特定的 Chromedriver 版本。或者在安装的时候指定版本,比如 npm install appium --chromedriver_version="2.16" 或者 CHROMEDRIVER_VERSION=2.20 npm install appium,也可以使用 LATEST 作为 CHROMEDRIVER_VERSION 的版本号,表示使用最新的 Chromedriver。或者可以在 Appium 运行的时候指定 --chromedriver-executable 为你自己下载的版本的路径,比如 appium --chromedriver-executable /path/to/my/chromedriver

以下就是 Chromedriver 版本和支持的 Chrome 的最小版本的信息:

Version Minimum Chrome Version Link to Chromedriver
2.29 57.0.2987.0 link
2.28 55.0.2883.0 link
2.27 54.0.2840.0 link
2.26 53.0.2785.0 link
2.25 53.0.2785.0 link
2.24 52.0.2743.0 link
2.23 51.0.2704.0 link
2.22 49.0.2623.0 link
2.21 46.0.2490.0 link
2.20 43.0.2357.0 link
2.19 43.0.2357.0 link
2.18 43.0.2357.0 link
2.17 42.0.2311.0 link
2.16 42.0.2311.0 link
2.15 40.0.2214.0 link
2.14 39.0.2171.0 link
2.13 38.0.2125.0 link
2.12 36.0.1985.0 link
2.11 36.0.1985.0 link
2.10 33.0.1751.0 link
2.9 31.0.1650.59 link
2.8 30.0.1573.2 link
2.7 30.0.1573.2 link
2.6 link
2.5 link
2.4 29.0.1545.0 link
2.3 28.0.1500.0 link
2.2 27.0.1453.0 link
2.1 27.0.1453.0 link
2.0 27.0.1453.0 link

我们可以在这里 可以找到完整的 Chromedriver release 列表。任何一个 Chromedriver 支持的 Chrome 最小版本都可以在 Chromium 项目的源码中找到。把发布那个提交给拉出来,然后在 src/chrome/test/chromedriver/chrome/version.cc 里找到 kMinimumSupportedChromeVersion 这个变量。

安装遇到的网络问题

Appium 安装的时候需要下载 Chromedriver,所以经常会遇到网络问题,尤其在有长城防火墙的中国。

Chromedriver 默认是从 https://chromedriver.storage.googleapis.com/ 下载。如果要使用镜像的话,需要配置npm的参数 chromedriver_cdnurl

npm install appium-chromedriver --chromedriver_cdnurl=http://npm.taobao.org/mirrors/chromedriver

或者把这个参数加到你的 .npmrc 文件中去.

chromedriver_cdnurl=http://npm.taobao.org/mirrors/chromedriver

也可以使用环境变量 CHROMEDRIVER_CDNURL.

CHROMEDRIVER_CDNURL=http://npm.taobao.org/mirrors/chromedriver npm install appium-chromedriver

当然最好开着代理或者vpn来下载更好。

本文由 lihuazhang 翻译,由 lihuazhang 校验。