利用Chrome Dev Tools 连接手机端Webview步骤简化说明

写在前面:
需提前开启微信的webview,并保证chromedriver可以正常启动
很多CDP测试都是用的PC端,开启PC端的chrome,这里主要说一下如何与webview建立ws连接

1.启动chromedriver

chromedriver --url-base=wd/hub --port=8000 --adb-port=5037

启动后出现类似如下日志:chromedriver版本不同 日志内容会不同

Starting ChromeDriver 2.40.565386 (45a059dc425e08165f9a10324bd1380cc13ca363) on port 8000
Only local connections are allowed.

2.连接webview,生成websocket地址

手机微信开启,页面停留在webview页面,确定当前在chrome浏览器中chrome://inspect/#devices可以找到对应的webview页面

向chromedriver发送session

http://127.0.0.1:8000/wd/hub/session//POST发送 8000为chromedriver启动端口
{
"desiredCapabilities": 
    {
    "chromeOptions": 
        {

        "androidUseRunningApp": true, 
        "androidDeviceSerial": "设备id",
        "androidPackage": "com.tencent.mm",//微信package
        "androidProcess": "com.tencent.mm:tools"//微信Proccess
        }
    }
}

3.获取websocket地址

adb -P 5037 -s 设备id forward --list

可以得到

[设备id]  tcp:52418 localabstract:webview_devtools_remote_2327

浏览器中打开

http://localhost:52418/json/list   #52418取自上面的端口号 结果即可得到该页面的ws地址

此时我们就可以通过CDP向webview页面注入JS了

在python文件中通过websocket向webview传递js

import websocket
import json

conn = websocket.create_connection("ws://localhost:52418/devtools/page/AFB76F51539FCDBE2459D0B665CAAF51")
conn.send(json.dumps({"id": 1, "method": "Runtime.evaluate", "params": {"expression": "window.location.toString()"}}))
data = conn.recv()
print data

参考文档:

https://chromedevtools.github.io/devtools-protocol/tot/Runtime
# ATX 利用 Chrome Dev Tools 进行 WebView 的测试 (初级版本)
Appium测试WebView切换context:为什么Android System Webview升级之后仍然报出chrome version版本过低问题
Android Webview 基于chromedriver 查看具体页面pagesource

你可能感兴趣的:(利用Chrome Dev Tools 连接手机端Webview步骤简化说明)