ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

如何为 Midscene 配置远程 iOS 设备的自定义 WebDriverAgent Host 与端口

如何为 Midscene 配置远程 iOS 设备的自定义 WebDriverAgent Host 与端口 如何为 Midscene 配置远程 iOS 设备的自定义 WebDriverAgent Host 与端口【免费下载链接】midsceneGUI Agent for E2E Testing项目地址: https://gitcode.com/GitHub_Trending/mid/midsceneMidscene 通过 WebDriverAgentWDA连接 iOS 设备。默认的wdaHost是localhostwdaPort是8100。当 WDA 运行在其他机器上远程设备或自建 WDA 部署或者一台机器上同时驱动多台设备时默认的 host 和端口就无法满足需求。本文说明如何在 Midscene 的 iOS 集成中指定自定义的 WebDriverAgent Host 与端口覆盖 JavaScript SDK 和 YAML 脚本两种用法并给出验证方式。前提条件在配置自定义 Host 与端口之前先确保 WDA 服务本身可用。根据 iOS 平台指南 和其中的环境准备说明需要 macOS 环境iOS 开发要求以及 Xcode 和 Xcode command line tools。WebDriverAgent 版本要求 7.0.0。真机需要在设备上手动开启开发者模式Settings Privacy Security Developer Mode和 UI AutomationSettings Developer UI Automation并让设备信任当前 Mac模拟器则默认开启这两项。真机连接需要端口转发工具iproxy模拟器不需要。WDA 配置完成后用状态端点验证服务是否可用访问http://localhost:8100/status能收到如下结构的 JSON文档示例实际值会不同即表示 WDA 已正常工作{ value: { message: WebDriverAgent is ready to accept commands, state: success, ready: true }, sessionId: BCAD9603-F714-447C-A9E6-07D58267966B }如果你最终把wdaHost指向远程主机这个验证应在对应的host:port/status上进行。在 JavaScript SDK 中配置 wdaHost 与 wdaPort自定义 Host 与端口通过两个参数传递wdaPort?: number— WebDriverAgent 端口默认8100。wdaHost?: string— WebDriverAgent host默认localhost。API 参考中明确说明使用wdaHost/wdaPort可以指向远程设备或自建的 WDA 部署。有两种等价的配置方式来自 iOS 指南 FAQ// Method 1: Using IOSDevice const device new IOSDevice({ wdaPort: 8100, // Custom port wdaHost: 192.168.1.100 // Custom host }); // Method 2: Using convenience function (recommended) const agent await agentFromWebDriverAgent({ wdaPort: 8100, // Custom port wdaHost: 192.168.1.100 // Custom host });IOSAgent也可以直接接收一个已配置的IOSDevice实例先new IOSDevice({ wdaPort, wdaHost })再new IOSAgent(page, {...})并await page.connect()。两种方式传入的都是同一组设备选项。如果还需要使用 Playground 实时画面的原生 MJPEG 流注意 MJPEG 有独立端口wdaMjpegPort默认9100多设备并发时文档要求为每台设备使用不同的wdaPort和wdaMjpegPort避免 WDA 命令和 MJPEG 流端口冲突。远程真机先用 iproxy 做端口转发针对远程设备Midscene 的文档给出的配套步骤是在 Mac 上设置端口转发iproxy 8100 8100 YOUR_DEVICE_ID这里YOUR_DEVICE_ID是文档中保留的占位符需要替换为你自己的设备 ID8100 8100分别是本地监听端口和 WDA 侧端口。如果 WDA 实际监听在其他端口两个位置应改为对应的本地/远端端口并且脚本中的wdaPort要填写本地一侧的端口wdaHost保持localhost。文档同时说明模拟器不需要 iproxy。启用原生 MJPEG 流时同理转发 WDA MJPEG Server 端口默认 9100# Required for real devices only (simulators dont need this) iproxy 9100 9100 YOUR_DEVICE_IDPlayground 启动时会自动探测 9100 端口探测成功时日志显示MJPEG: streaming via native WDA MJPEG server否则自动回退到轮询截图模式。运行脚本并验证结果以 SDK 示例脚本为例保存为./demo.ts模型环境变量按 模型配置说明 配置后用npx tsx demo.ts运行import { IOSAgent, IOSDevice, agentFromWebDriverAgent } from midscene/ios; const page new IOSDevice({ wdaPort: 8100, wdaHost: 192.168.1.100, // 你的自定义 WDA host }); const agent new IOSAgent(page, { aiActionContext: If any location, permission, user agreement, etc. popup appears, click agree., }); await page.connect(); await agent.aiAct(Search for Headphones); await agent.destroy();page.connect()成功建立连接随后aiAct等动作能正常执行即说明自定义 Host 与端口配置生效。脚本结束后控制台应出现Midscene - report file updated: /path/to/report/some_id.html路径为实际生成路径在浏览器打开该 HTML 可以回放每次交互、查询和断言。在 YAML 脚本中配置 wdaHost 与 wdaPort如果任务是 YAML 脚本而不是 TS 脚本配置位置在脚本顶部的ios部分来自 YAML 脚本指南ios: # WebDriverAgent port, optional, defaults to 8100. wdaPort: port # WebDriverAgent host address, optional, defaults to localhost. wdaHost: hostport和host替换为你的实际端口和主机地址。该部分还支持IOSDevice构造函数支持的其他选项如autoDismissKeyboard、launch等。也可以通过 CLI 参数一次性覆盖整批脚本的设置来自 YAML 脚本运行器文档--ios.wdaPort port: Overrideios.wdaPortfor all scripts.--ios.wdaHost host: Overrideios.wdaHostfor all scripts.命令行参数的优先级高于配置文件--config和脚本内的ios部分配置文件的字段会深度合并到每个脚本上。连接异常时检查什么文档给出的真机排查清单来自 iOS 指南 FAQ开发者模式是否在 Settings Privacy Security Developer Mode 中开启UI Automation 是否在 Settings Developer UI Automation 中开启设备是否信任当前 Mac若配置指向远程/真机iproxy端口转发是否已建立转发端口与脚本中的wdaPort是否一致。另注意真机与模拟器的差异真机必须手动开启开发者模式和 UI Automation 设置且需要 iproxy模拟器这两项默认开启也不需要端口转发。若 WDA 状态端点本身无法访问应先按前提条件一节处理 WDA 配置再回到wdaHost/wdaPort的组合。参考资料iOS 平台指南WDA 准备、Playground、FAQ含自定义 WDA 端口与 host 一节API 参考iOS 章节IOSDevice完整选项与agentFromWebDriverAgent()YAML 自动化脚本ios配置段YAML 脚本运行器--ios.wdaPort/--ios.wdaHost命令行覆盖【免费下载链接】midsceneGUI Agent for E2E Testing项目地址: https://gitcode.com/GitHub_Trending/mid/midscene创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表