Appium Appium 测试 WebView 切换 context:问题查找及解决全记录

进击的程序茗 · 2018年07月22日 · 最后由 nancy870918 回复于 2019年05月10日 · 2066 次阅读

参考教程

如何获取 app 的 Package&Activity

在 appium 传递参数过程总需要传递 appPackage 和 appActivity
获取方式,打开你想要测试的 app

adb shell "dumpsys window w|grep \/|grep name=|sed 's/mSurface=Surface(name=//g'|sed 's/)//g'|sed 's/ //g'"

如果参数传递不对 会导致 app 无法启动

报错 Chrome version must be >= xx

chromedriver 是实现 WebDriver 有线协议的一个单独的服务,有了 chromedriver,selenium 才可以执行一些相关操作。因此 chromedriver 的版本问题一定要对应好。
这里的版本问题是指,这一点非常重要:

appium 中的 chromedriver 版本问题 与 被测 app 的 chrome 版本问题相一致

chrome 与 chromedriver 对应关系版本映射表如下 blogselenium 之 chromedriver 与 chrome 版本映射表(更新至 v2.40)

chromedriver 版本号获取方式
  1. 从具体路径获得 我们需要知道 appium 中的 chromedriver appium 中路径 [mac 环境]: cd /usr/local/lib/node_modules/appium/node_modules/appium-chromedriver/chromedriver/mac chromedriver 打开后即可获取到当前版本。
  2. 从 appium 日志中获得
    appium日志中查看

  3. 命令行查看

    /usr/local/lib/node_modules/appium/node_modules/appium-chromedriver/chromedriver/mac/chromedriver --url-base=wd/hub --port=8000 --adb-port=5037 --verbose
    

    chromedriver 下载地址:chromedriver 下载

chrome 版本号查看

经常会发现如下报错

Encountered internal error running command: Error: Failed to start Chromedriver session: A new session could not be created. (Original error: session not created exception: Chrome version must be >= 60.0.3112.0  

错误中说到 chrome 版本问题 在网上查说是系统的一个版本 Android System Weview 版本不对,需要升级,查看该 app 的版本方式

adb shell dumpsys package com.google.android.webview | grep versionName

*** 升级后 发现仍然不对,我的手机已经显示 android system webview 版本是 60 了,但是 appium 日志中仍然报错如上
appium仍然报出低于60的版本

后来通过查看 appium 源码发现了问题 appium 找的版本号并不是手机上的 android system webview 版本号 而是被测 app 的 chrome 版本号。
也就是说你要测的 app chrome 是 51 版本,那么就应该按照 chrome 和 chromedriver 的对应关系对 chromedriver 进行降级![个人想法,如有错误还请指出]
也就说当你测试不同 app 的 Webview 时 所需要的 chromedriver 可能是需要变化的。
appium 断点内容
appium输出
appium 源码
appium源码

基本上在切换 webview 时遇到的就是这个问题了~记录一下。
在网上查到的都是给 Android System Webview 升级 但是我这边升级之后并没有什么作用。以上是个人使用 WebView 的记录,如有错误还请指出。

共收到 4 条回复 时间 点赞
进击的程序茗 Appium context 切换的问题 中提及了此贴 07月22日 18:13

不错,虽然阅读量不大,不过这种探索精神挺好。一般升级 webview 是不现实的,都是降级的

天啊!被翻牌了!开心~

请问如何查看被测 app 的 chrome 版本或者说 webview 版本是多少呢?我也遇到了类似的问题,换了好多个版本的 chromedriver 任然报错说版本对不上

请问如何查看被测 app 的 chrome 版本或者说 webview 版本是多少呢?我也遇到了类似的问题,换了好多个版本的 chromedriver 任然报错说版本对不上 ---- 同问,我也遇到这样的问题

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册