前言
由於app的webview自動化是依賴於chromedriver的,並且每個app的webview版本號都不太一樣,這就導致了,每次都需要重新去下載對應的chromedriver版本.如何根據當前的webdriver版本去匹配對應chromedriver版本,這是一個難題。可以看下如下官方文檔,本篇是根據官方文檔翻譯過來的。
版本不匹配的話一般會報錯:An unknown server-side error occurred while processing the command.
Original error: unknown error: Chrome version must be >= 55.0.2883.0
appium里面chromedriver版本的路徑地址,appium1.7以后版本默認安裝在c盤,找到如下路徑可以看版本號:
\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win
Chromedriver
Appium支持自動化Android網頁(在Chrome和內置瀏覽器中)以及Chrome支持的混合應用程序,方法是 在必要時管理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版本,無論是在安裝時,通過傳遞--chromedriver_version 配置屬性,例如,
推薦此方法
cnmp -v
cnpm install -g appium --chromedriver_version="2.19"
npm安裝不穩定,可以用cnpm安裝
或者在CHROMEDRIVER_VERSION環境變量中指定版本,例如,
CHROMEDRIVER_VERSION=2.20 npm install appium
這也可以設置為LATEST獲取最新版本。
最后,可以在運行時指定版本,方法是指定 --chromedriver-executable服務器標志以及手動下載的Chromedriver可執行文件的完整路徑,例如,
appium --chromedriver-executable /path/to/my/chromedriver
Chromedriver / Chrome兼容性
以下是Chromedriver版本及其相應的可自動更新的最低Chrome版本列表:
chromedriver歷史版本下載地址,點這里
chromedriver | 支持Chrome最低版本 | Chromedriver下載地址 |
---|---|---|
2.39 | v66-68 | v2.39鏈接 |
2.38 | v65-67 | v2.38鏈接 |
2.37 | 64.0.3282.0 | v2.37鏈接 |
2.36 | 63.0.3239.0 | v2.36鏈接 |
2.35 | 62.0.3202.0 | v2.35鏈接 |
2.34 | 61.0.3163.0 | v2.34鏈接 |
2.33 | 60.0.3112.0 | v2.33鏈接 |
2.32 | 59.0.3071.0 | v2.32鏈接 |
2.31 | 58.0.3029.0 | v2.31鏈接 |
2.30 | 58.0.3029.0 | v2.30鏈接 |
2.29 | 57.0.2987.0 | v2.29鏈接 |
2.28 | 55.0.2883.0 | v2.28鏈接 |
2.27 | 54.0.2840.0 | v2.27鏈接 |
2.26 | 53.0.2785.0 | v2.26鏈接 |
2.25 | 53.0.2785.0 | v2.25鏈接 |
2.24 | 52.0.2743.0 | v2.24鏈接 |
2.23 | 51.0.2704.0 | v2.23鏈接 |
2.22 | 49.0.2623.0 | v2.22鏈接 |
2.21 | 46.0.2490.0 | v2.21鏈接 |
2.20 | 43.0.2357.0 | v2.20鏈接 |
2.19 | 43.0.2357.0 | v2.19鏈接 |
2.18 | 43.0.2357.0 | v2.18鏈接 |
2.17 | 42.0.2311.0 | v2.17鏈接 |
2.16 | 42.0.2311.0 | v2.16鏈接 |
2.15 | 40.0.2214.0 | v2.15鏈接 |
2.14 | 39.0.2171.0 | v2.14鏈接 |
2.13 | 38.0.2125.0 | v2.13鏈接 |
2.12 | 36.0.1985.0 | v2.12鏈接 |
2.11 | 36.0.1985.0 | v2.11鏈接 |
2.10 | 33.0.1751.0 | v2.10鏈接 |
2.9 | 31.0.1650.59 | v2.9鏈接 |
2.8 | 30.0.1573.2 | v2.8鏈接 |
2.7 | 30.0.1573.2 | v2.7鏈接 |
2.6 | 29.0.1545.0 | v2.6鏈接 |
2.5 | 29.0.1545.0 | v2.5鏈接 |
2.4 | 29.0.1545.0 | v2.4鏈接 |
2.3 | 28.0.1500.0 | v2.3鏈接 |
2.2 | 27.0.1453.0 | v2.2鏈接 |
2.1 | 27.0.1453.0 | v2.1鏈接 |
2.0 | 27.0.1453.0 | v2.0鏈接 |
可用的Chromedriver版本的完整列表在這里。要查找任何特定版本的最低支持版本,請獲取Chromium 源代碼,檢查發布提交並檢查kMinimumSupportedChromeVersion 文件中的變量src/chrome/test/chromedriver/chrome/version.cc。(要查找發布提交,可以使用git log --pretty=format:'%h | %s%d' | grep -i "Release Chromedriver version"。)
自動發現兼容的Chromedriver
從Appium 1.8.0開始,Appium能夠為測試中的Chrome版本選擇正確的Chromedriver。盡管Appium只與最新發布的Appium版本發布時的Chromedriver捆綁在一起,但可以下載更多的Chromedriver版本,並將其放置在Appium安裝中(不推薦,因為升級Appium會刪除它們)或在自定義位置可以用chromedriverExecutableDir所需的能力指示給Appium 。此功能是您放置一個或多個Chromedriver可執行文件的目錄的絕對路徑。
同樣,由於Chromedriver的新版本可能不適用於Appium版本,因此可以通過chromedriverChromeMappingFile 所需功能將Chromedrivers自定義映射到它們支持的最低Chrome版本。這應該是具有映射的文件的絕對路徑。該文件的內容需要被解析為JSON對象,如:
{
"2.42":"63.0.3239",
"2.41":"62.0.3202"
}
安裝網絡問題
當安裝Appium時,需要下載Chromedriver,因此可能會出現網絡問題,導致安裝失敗。
默認情況下,Chromedriver從中被檢索https://chromedriver.storage.googleapis.com/。要使用ChromeDriver二進制文件的鏡像,請使用npm config屬性chromedriver_cdnurl。
npm install appium-chromedriver --chromedriver_cdnurl=http://npm.taobao.org/mirrors/chromedriver
或者將該屬性添加到您的.npmrc文件中。
chromedriver_cdnurl=HTTP://npm.taobao.org/mirrors/chromedriver
另一種選擇是使用PATH變量CHROMEDRIVER_CDNURL。
CHROMEDRIVER_CDNURL=http://npm.taobao.org/mirrors/chromedriver npm install appium-chromedriver
可能還需要調整網絡代理和防火牆設置以允許下載發生。
cnpm安裝
1.如果npm安裝經常失敗(國外服務器不穩定),可以用cnpm安裝(國內淘寶鏡像),這個相當於是npm的升級版,先用npm安裝cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org
2.用cnpm安裝appium也一樣
cnpm -v
cnpm install -g appium --chromedriver_version="2.19"
原文地址:https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/web/chromedriver.md