如何通过USB使用Puppeteer连接真实Android设备?
Puppeteer连接真实Android设备的实现方法
可以通过ADB端口转发+DevTools调试协议的方式,用Puppeteer.connect()连接真实Android设备,具体步骤如下:
前置准备
- Android设备开启USB调试(设置-开发者选项-USB调试,若没看到开发者选项,先在关于手机里连续点击版本号开启)
- 电脑安装并配置好ADB工具,确保
adb devices命令能识别到连接的设备
步骤1:配置ADB端口转发
在终端执行以下命令,将设备的Chrome调试端口转发到本地9222端口:
adb forward tcp:9222 localabstract:chrome_devtools_remote
若使用Chrome Beta/Dev版本或其他浏览器,需替换对应的调试端口标识:
- Chrome Beta:
chrome_devtools_remote_beta- 三星浏览器:
samsung_devtools_remote
可以通过adb shell ls /data/local/tmp命令查看设备上的调试端口标识
步骤2:获取DevTools连接地址
在电脑浏览器访问http://localhost:9222/json/version,复制返回结果中的webSocketDebuggerUrl字段值,格式类似ws://localhost:9222/devtools/browser/xxxxxx
步骤3:用Puppeteer.connect()建立连接
编写代码连接设备上的Chrome实例:
const puppeteer = require('puppeteer'); (async () => { // 替换为你获取到的webSocketDebuggerUrl const browserWSEndpoint = 'ws://localhost:9222/devtools/browser/xxxxxx'; const browser = await puppeteer.connect({ browserWSEndpoint, defaultViewport: null // 适配设备原生屏幕尺寸 }); // 获取已有页面或新建页面 const pages = await browser.pages(); const targetPage = pages[0] || await browser.newPage(); // 执行测试逻辑,比如打开页面并获取性能数据 await targetPage.goto('https://example.com'); console.log('页面标题:', await targetPage.title()); // 获取性能指标 const metrics = await targetPage.metrics(); console.log('性能数据:', metrics); await browser.disconnect(); })();
注意事项
- 确保设备上的Chrome版本与Puppeteer依赖的Chrome版本尽量接近,避免调试协议不兼容导致连接失败
- 若连接失败,可尝试重启ADB服务(
adb kill-server+adb start-server)或重新插拔设备 - 性能测试时,可结合
targetPage.tracing.start()和targetPage.tracing.stop()生成性能追踪报告
内容的提问来源于stack exchange,提问作者Adam Cable
相关产品推荐
相关产品推荐

