mac搭建appium环境之设置chromdriver

背景:

appium对app进行UI自动化测试,原生页面切换到webview页面时,driver也要从NATIVE_APP切换到WEBVIEW_xxxxx,这个切换过程经常会出现chromdriver与安卓设备的webview版本不一致造成切换失败,从而不能执行后续对web页面元素操作的情况。

解决方案:

1、手动下载与安卓设备自带的webview相匹配的版本的chromedriver(注意与安卓设备的chrome浏览器和PC端chrome浏览器的版本没有任何关系);chromedriver下载地址为https://chromedriver.storage.googleapis.com/index.html 该地址可以分别看到不同版本的chromedriver支持的安卓设备的webview版本的范围值,安卓设备上的webview版本号可以从设备上或appium的日志中找到,不再赘述。

  • 1)将下载好的chromedriver放到mac中指定的路径下(覆盖掉之前的),路径如下,也可自定义
/usr/local/lib/node_modules/appium/node_modules/appium-chromedriver/chromedriver/mac/chromedriver
  • 2)在appium初始化代码中加入Capability参数,服务运行时会自动找该路径下的chromedriver
caps.setCapability("chromedriverExecutable", "/usr/local/lib/node_modules/appium/node_modules/appium-chromedriver/chromedriver/mac/chromedriver");

2、程序自动下载与当前测试设备webview版本一致的chromedriver,从Appium 1.15.0及以上版本支持;避免了主动寻找chromedriver的繁琐,官网说明文档:

https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/web/chromedriver.md#automatic-discovery-of-compatible-chromedriver

截取如下:

-Since Appium 1.15.0 there is a possibility to automatically download the necessary chromedriver(s) into chromedriverExecutableDir from the
official Google storage. The script will automatically search for the
newest chromedriver version that supports the given browser/web view,
download it (the hash sum is verified as well for the downloaded
archive) and add to the chromedriverChromeMappingFile mapping.
Everything, which is needed to be done from your side is to execute
the server with chromedriver_autodownload feature enabled (like appium
–allow-insecure chromedriver_autodownload). You can also check the Security document for more details on how to control potentially
insecure server features.

翻译一下:

appium从1.15.0开始,具备了自动下载必需的chromedriver到chromedriverExecutableDir下的功能,程序会自动寻找符合当前设备webview版本的最新的chromedriver版本并自动下载然后加入到chromedriverChromeMappingFile映射文件中,你需要做的唯一的事情就是在服务端执行具有自动下载特征的命令,如:appium --allow-insecure chromedriver_autodownload

  • 1)初始化代码中加入下面几行
caps.setCapability("chromedriverExecutableDir", "/usr/local/lib/node_modules/appium/node_modules/appium-chromedriver/chromedriver/mac");
caps.setCapability("chromedriverChromeMappingFile", "/usr/local/lib/node_modules/appium/node_modules/appium-chromedriver/chromedriver/chromedriver_support.json");

自动下载的chromedriver会放置到…/mac/路径下;
自动下载的chromedriver会在chromedriver_support.json文件中形成相应的版本记录,该文件是json格式,可以自建空白文件打开后用{}括上即可。

  • 2)在appium服务端执行 appium --allow-insecure chromedriver_autodownload 该命令即可使自动下载chromedriver生效。

附1:http://appium.io/docs/en/writing-running-appium/caps/ (Capability参数详解)

原博文地址:http://54gwz.cn/article/1594204169

你可能感兴趣的:(appium,mac)