ATX uiautomator2 混合 app (原生 +H5) -> VXP 强制开启 WebView 实操记录

郝斯文 · 2018年09月14日 · 最后由 郝斯文 回复于 2018年11月10日 · 885 次阅读

群里挺多人问起webview的,也有挺多不理解VirtualXposed是怎么用的,这里简单说明,自己也记录下。

@codeskyblue大佬的Android WebView 研究笔记,╰(°▽°)╯里面讲述了WebView 的相关原理,详细的大家去大佬的帖子了解:

一、chromedriver配置(必备)+修改chromedriver.py相关代码

这里不细说,直接查看上一个记录:ATX-uiautomator2 app 原生 + webview 的实际操作记录 (安卓)

切记:Chrome开inspect的时候不能和python代码同时运行。

二、使用VXP强制开启WebView(这一块是重点,这里再写一遍)

conv_ops

  • 将应用程序或Xposed模块安装到VirtualXposed有三种方法:
    • 从原始系统克隆已安装的应用程序。(单击主页底部的“按钮”,然后单击“添加应用程序”,第一页显示已安装应用程序的列表。)
    • 通过APK文件安装。(单击主页底部的按钮,然后单击添加应用程序,第二页显示在SD卡中找到的APK)
    • 通过外部文件选择器安装。(单击主页底部的按钮,然后单击添加应用程序,使用浮动操作按钮选择要安装的APK文件)

插件的原理可以在这里看到 https://www.jianshu.com/p/d6699cd4505e

安装好之后,先打开

进入到模块中,勾选WebViewDebugHook

返回,然后向下滑动,进入界面,点击箭头位置

最后进入到一个设置页面,拖到最下面点击 重启 让插件更改生效

conv_ops

三、WebView代码实践

还是拿macac的demo演示的apk来测试一下看看,
apk下载地址:https://npmcdn.com/android-app-bootstrap@latest/android_app_bootstrap/build/outputs/apk/android_app_bootstrap-debug.apk

  • 注意:所有操作(Xposed Module,APP的安装)必须在VirtualXposed中完成,否则安装的Xposed模块将不会生效。
    • 例如:只是安装微信在原生系统上,如果你直接启动原生系统的微信切换webview是肯定失败的。那如果我们要做自动化这里一定要先启动VirtualXposed,然后打开测试应用app才能去操作相关元素和切换webview成功
    • 如上面的代码一样,先启动VirtualXposed,然后点击打开测试应用app,才能去操作相关元素并切换webview,打印出webview的text成功的话就大功告成了,赶紧去试试你的应用吧
    • 说明下由于我把在VirtualXposed安装的测试应用拖到了VirtualXposed首页,才能启动VirtualXposed后点击测试应用,如果你不是拖到首页请自行增加操作

  • testXposed.py代码如下:
import uiautomator2 as u2
from atx.ext.chromedriver import ChromeDriver

d = u2.connect('192.168.23.15')
d.app_start('io.va.exposed', stop='True') # 先启动VirtualXposed

d(text=u"API Demos").click(timeout=10) # 再点击启动测试应用
d(resourceId="android:id/text1", text=u"Views").click()
d(scrollable=True).scroll.to(text=u"WebView") # 垂直滚动直到指定UI对象出现
d(resourceId="android:id/text1", text=u"WebView").click()

driver = ChromeDriver(d).driver('192.168.23.15:5555') # 切换进webview
el = driver.find_element_by_xpath("/html/body/a")
print(el.text)
driver.quit()

运行代码,控制台打印出webview页面的text了

Hello World! - 1

还有一点说明下:VirtualXposed里面安装好要测试的应用后,原生系统也一定要安装对应的应用app,不然会报错提示你手机上没有安装该应用

共收到 8 条回复 时间 点赞
1楼 已删除

可以😊

仅楼主可见

自己测试的app 让开发把webview的debug打开不就好了😏

first-on-line 回复

网络原因,这个没关系,如果你一定要用inspect查看元素,记得开vpn

linpengcheng 回复

自家的应用当然拉,这肯定是最优的办法,哈哈哈哈。

郝斯文 回复

OK,多谢

楼主,微信小程序要怎样打开😂

yideng-dst 回复

https://testerhome.com/topics/16604 看下我写的这篇,希望有所帮助

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