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

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

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

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

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

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

conv_ops

插件的原理可以在这里看到 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

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,不然会报错提示你手机上没有安装该应用


↙↙↙阅读原文可查看相关链接,并与作者交流