appium+python自动化57-chromedriver与chrome版本
前言
由于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
上海-悠悠 QQ交流群:330467341
appium+python自动化57-chromedriver与chrome版本的更多相关文章
- Appium+python自动化8-Appium Python API
Appium+python自动化8-AppiumPython API 前言: Appium Python API全集,不知道哪个大神整理的,这里贴出来分享给大家. 1.contexts conte ...
- Appium+python自动化20-查看iOS上app元素属性
前言 学UI自动化首先就是定位页面元素,玩过android版的appium小伙伴应该都知道,appium的windows版自带的Inspector可以定位app上的元素 Mac版的appium1.6的 ...
- Appium+python自动化19-iOS模拟器(iOS Simulator)安装自家APP
前言 做过iOS上app测试的小伙伴应该都知道,普通用户安装app都是从appstore下载安装,安装测试版本的app,一般就是开发给的二维码扫码安装, 或者开发给个.ipa的安装包文件,通过itoo ...
- Appium+python自动化20-查看iOS上app元素属性【转载】
前言 学UI自动化首先就是定位页面元素,玩过android版的appium小伙伴应该都知道,appium的windows版自带的Inspector可以定位app上的元素Mac版的appium1.6的版 ...
- Appium+python自动化19-iOS模拟器(iOS Simulator)安装自家APP【转载】
前言 做过iOS上app测试的小伙伴应该都知道,普通用户安装app都是从appstore下载安装,安装测试版本的app,一般就是开发给的二维码扫码安装, 或者开发给个.ipa的安装包文件,通过itoo ...
- chromedriver与chrome版本对应
今天把手头有的一些关于selenium测试的资源整理了一下,分享出来. 1. 所有版本chrome下载 是不是很难找到老版本的chrome?博主收集了几个下载chrome老版本的网站,其中哪个下载的是 ...
- Appium+python自动化-查看app元素属性
本文转自:https://www.cnblogs.com/yoyoketang/p/7581831.html 前言 学UI自动化首先就是定位页面元素,玩过android版的appium小伙伴应该都知道 ...
- chromedriver与chrome版本映射列表
chromedriver与chrome版本映射列表: chromedriver版本 支持的Chrome版本 v2.30 v58-60 v2.29 v56-58 v2.28 v55-57 v2.27 v ...
- Python3 ChromeDriver与Chrome版本映射表(更新至v2.43)
Python3 ChromeDriver与Chrome版本映射表(更新至v2.43) ChromeDriver下载链接:http://chromedriver.storage.googleapis.c ...
随机推荐
- npm install 装本地一直安装全局问题
想用npm安装一些模块,不管怎么装,一直装作全局. 以为是node有问题,重装了N次,却还发现这个问题. 困惑几天无果, 偶然间通过此文章发现,npm存在配置文件:https://www.sitepo ...
- Quartz任务调度入门
Quartz任务调度入门 了解Quartz体系结构Quartz对任务调度的领域问题进行了高度的抽象,提出了调度器.任务和触发器这3个核心的概念,并在org.quartz通过接口和类对重要的这些核心概念 ...
- 自组织神经网络介绍:自组织特征映射SOM(Self-organizing feature Map),第三部分
前面两篇介绍了SOM的基本概念和算法,第一部分,第二部分,本篇具体展开一下应用中的一些trick设定. SOM设计细节 输出层设计 输出层神经元数量设定和训练集样本的类别数相关,但是实际中我们往往不能 ...
- 总结开发ERP软件应遵循的一些基本原则
总结一下做管理软件,有哪些项是经过检验的条款,必须遵守的. 界面篇 1 要保存用户的偏号(profile/favourite). ASP.NET 2.0引入此功能,当用户修改默认的控件的属性时,框架 ...
- NIO-2通道(Channel)
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import ...
- java SE :标准输入/输出
一 标准设备输入/输出 A 标准输入/输出类 System B 控制台读写类 Console 标准输入/输出类 System 1 标准输入.标准输出.错误输出流 // 标准输入流 public f ...
- 使用Unity解耦你的系统—PART3——依赖注入
继续学习Unity,在前几篇中已经将Unity的使用方法做了一个还算详细的介绍了,主要是如何通过代码及配置文件来注册对象之间的关系.Unity内置所有的生命周期管理使用介绍,及Unity的Regist ...
- 服务管理(svcadm)
svcs 正在运行的服务 svcs -a 正在运行和没运行的服务 svcs -D 此进程依赖的进程 svcs -D sendmail svcs -d 依赖于此进程的进程 svcs - ...
- 转:使用python的Flask实现一个RESTful API服务器端
提示:可以学习一下flask框架中对于密码进行校验的部分.封装了太多操作. 最近这些年,REST已经成为web services和APIs的标准架构,很多APP的架构基本上是使用RESTful的形式了 ...
- Mybatis使用入门
一.Mybatis简介 1.传统JDBC的不足 我们首先看一下JDBC的一般操作流程.比如,我想从user表中获取根据name获取数据,下面是传统JDBC代码: package lkb.webchat ...