在使用appnium 测试app的内嵌H5页面时,发现定位不到里面的元素,它是被一个大的webview所包裹,需要先切换进webview中 ,然后就像测试web端一样定位元素,才能测试,但在使用contexts方法获取上下文时,发现只能获取NATIVE_APP 这个一个上下文,获取不到webview的,这是因为开发并没有将webview的debug模式打开,而开启这个模式还需要开发加代码打包,测试环境下还可以,但如果包要上线到正式环境下,再打开debug模式,就存在一定的安全隐患,所以在测试过程中,最好的方法 还是我们在拿到包后,自己强制将包的webview debug 模式打开。
下面进入正题:
1.root
首先需要先将测试手机进行 root 操作,如果不想root的话 可以使用模拟器(推荐mumu模拟器)个人感觉比较友好—我这边使用的也是模拟器
2.安装xposed框架
这个app大家可以在百度上下载,或者直接下载我提供的这个
百度网盘: 链接:https://pan.baidu.com/s/12cQqrPy5XBP-KT0xNj_OYQ
提取码:3xu3
下载安装完成后 会提示未安装框架,只需要点install 下载一下就可以 下载完成后使用root权限才可以安装
3.安装xposed webview debugging模块
这个模拟的app包我也已经在网盘里面提供,下载到手机或模拟器中即可
在安装完这模块后,需要到它的模块中 勾选一下
勾选完成后,这时 就已经开启了大部分app的 webview debug 调试功能
5.验证
安装完成后,我们来验证一下是否可以识别app中的内嵌webview
先配置appnium 的模拟器路径
之后再使用 adb connect 连接模拟器
连接成功后 运行我们的 python代码
(这里进入内嵌H5界面后 我们使用contexts 来打印一下有几个 上下文 默认情况没有开启debug 时 只会出现一个NATIVE_APP)
我们可以发现这有俩个上下文,在没有改app内部代码的情况下,我们也是可以定位到它的内嵌H5 页面的,在定位到后,我们先切换进去,进去后就像操作web页面一下操作app中的内嵌H5页面 (可以使用谷歌的chrome://inspect 来查看页面的元素排序 )