前 言
现在的 app 中越来越多的页面通过 H5 来做了,理由很简单,不需要升级 app 就能让用户使用新的功能。这就苦了我们测试工程师了,混合应用自动化不会玩。今天咱们来聊一聊 app 中混合应用自动化怎么做。
一、环境准备
- appium==1.21.0
- JDK 版本 ==1.8
- android-sdk==Version 29.0.4-5871666
- python == 3.7.9
二、步骤
- 识别 app 中是否内嵌 h5
- 开启 WebView 调试模式
- 安装 h5 元素定位工具
- 获取获取所有的 contexts
- 切换到对应的 contexts
- 下载对应 WebView 版本驱动程序
- 在 H5 中进行元素定位和操作
- 如有需要 h5 操作完之后切回 app
三、步骤详解
第一步:识别 app 中是否内嵌 h5
- 手机上开发者选项、打开布局边界,打开被测 app,页面中无布局的就是 h5 内容
- 使用定位工具:如果元素上 className:android.webkit.WebView 则为 h5 内容
- 问开发(不推荐,显得你很不专业)
第二步:开启 WebView 调试模式
- Web 端我们直接按 F12 就能进入调试模式,进行元素定位,app 端是不可以这样操作的,我们打开 app 内嵌 H5 页面的 WebView 调试模式,才能像在 Web 端一样查看元素,写元素定位表达式
- 具体方式参考【歪歪老师】的文章:
第三步:安装 h5 元素定位工具
- 下载安装 uc-devtools(下最新版本):https://dev.ucweb.com/download/?spm=ucplus.11213647.c-header.6.6a0d2604yxauSH
- 打开 uc-devtools 工具,只要手机连接到电脑成功,uc-devtools 自动连接你手机
- 点设置,勾选本地 Devtools Inspector UI 资源
- 如果 app 页面有 H5 资源,在 Home 页面会自动识别到 app 页面为 h5 页面 uc-devtools 自动识别:
- 直接点击对应的 inspect,就可以看到熟悉的 Web 元素定位页面了
第四步:获取获取所有的 contexts
第六步:下载对应 WebView 版本驱动程序
- 下载地址(我用的是 chrome):http://npm.taobao.org/mirrors/chromedriver/
- 通过定位工具获取 WebView 版本信息
- 在启动参数增加驱动位置设置 desired_caps["chromedriverExecutable"]="刚下载好的驱动位置"
第七步:在 H5 中进行元素定位和操作
Web 中元素定位和操作这里不讲了
第八步:h5 操作完之后切回 app
四、演示代码