前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过 Chrome devtools protocol 和 adb 调试 Android Webview

通过 Chrome devtools protocol 和 adb 调试 Android Webview

作者头像
用户1258909
发布2021-08-20 16:46:11
3.3K0
发布2021-08-20 16:46:11
举报
文章被收录于专栏:拂晓风起拂晓风起

这个技术可以用于 UI 自动化等,用脚本自动控制 Android webview 或注入 js 执行。

前提条件:usb 连接手机,adb 能查找到 devices,如果有问题,多拔插几次,确认授权。

第一步,确认安卓 App 编译时已经启用了webview 允许调试(一般是允许的,可以通过连接usb,打开chrome的inspect页面(chrome://inspect/#devices),能连上就表示允许调试了)

第二步,查找进程 pid

使用命令: adb shell grep -a webview_devtools_remote /proc/net/unix

第三步,绑定进程消息到电脑的端口

使用命令: adb forward tcp:9222 localabstract:webview_devtools_remote_{pid}

第四步,验证绑定情况。

使用命令: curl localhost:9222/json/version

使用命令: curl localhost:9222/json/list

可以获得当前网页信息和调试用的websocket链接

第五步,通过websocket发送CDP(chrome devtools protocol)指令(使用上述 list 出来的页面 webSocketDebuggerUrl)

下边的是 nodejs 代码,引用了 ws npm包。

代码语言:javascript
复制
var wsURL = 'ws://127.0.0.1:9222/devtools/page/F4C53489B38E9B2785C62085DCB75FB9';
function ws() {
    var WebSocket = require('ws');
    const ws = new WebSocket(wsURL);
 
    ws.on('open', function open() {
        ws.send(JSON.stringify({"id": 1, "method": "Runtime.evaluate", "params": {"expression": "window.location.toString()"}}));
    });
 
    ws.on('message', function incoming(message) {
        console.log('received: %s', message);
    });
}
ws();

打印结果:received: {"id":1,"result":{"result":{"type":"string","value":"https://games.shopee.co.id/pet/?activity=23cb19698abc84fa"}}}

再往后,可以使用一些现成的高级别api库,例如puppeteer实际就是基于CDP的一个库,但它只支持内置的chromium,无法用来调试外部浏览器。

按介绍说,https://github.com/cyrus-and/chrome-remote-interface 是一个相关的库,但实际使用时总无法连上ws。

如果直接更成熟的整套体系,例如 Appium,那就更方便了,这种工具已经把上述流程都内置了,参考:https://appium.io/docs/en/writing-running-appium/web/hybrid/

参考资料:

https://github.com/cyrus-and/chrome-remote-interface/

https://chromedevtools.github.io/devtools-protocol/

https://testerhome.com/topics/19461

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-08-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档