API 参考(PC 桌面)
本页记录了 @midscene/computer 提供的 PC 桌面特定 API。
有关适用于所有平台的通用 API,请参阅 通用 API 参考。
Agent 创建
agentForComputer(opts?): Promise<ComputerAgent>
创建用于本机桌面自动化的 agent。
向后兼容:
agentFromComputer仍可作为别名使用。
agentForRDPComputer(opts): Promise<ComputerAgent<RDPDevice>>
创建用于通过 RDP 控制远程 Windows 桌面的 agent。
参数:
本机桌面选项
displayId(可选):指定要控制的显示器。使用ComputerDevice.listDisplays()获取可用显示器。customActions(可选):向设备添加自定义操作。headless(可选,仅 Linux):设为true时通过 Xvfb 启动虚拟显示器,使桌面自动化能在无物理显示器的 Linux 服务器和 CI 环境中运行。也可通过环境变量MIDSCENE_COMPUTER_HEADLESS_LINUX=true设置。xvfbResolution(可选):Xvfb 虚拟显示器的分辨率,默认为'1920x1080x24'。
键盘输入选项
keyboardTypeDelay(可选):每次按键之间的最小延迟,单位为毫秒。设为正数后,本机和 RDP Computer Agent 会逐个 Unicode 字符发送文本,不再使用默认的整串输入。本机 Computer 会发送真实按键事件;未设置或设为0时,仍使用剪贴板粘贴,以免受到当前输入法的干扰。通过aiInput()传入的动作级keyboardTypeDelay优先于 Agent 级默认值,也可以传0,只对当前动作恢复剪贴板输入。
Agent 级选项同样会作用于 agent.ai() 自动规划生成的 Input 动作,因此不要求用户单独调用 aiInput():
RDP 选项
host:远程 Windows 主机名或 IP。port:RDP 端口,默认是3389。username/password:远程会话凭据。domain:可选的 Windows 域。adminSession:当服务端允许时,请求远程管理员会话。ignoreCertificate:用于跳过自签名证书校验。securityProtocol:可选'auto'、'tls'、'nla'或'rdp'。desktopWidth/desktopHeight:请求指定远程桌面分辨率。
使用 @midscene/computer 在无头 Linux CI 中测试 Obsidian(Electron 应用)的完整示例:https://github.com/web-infra-dev/midscene-example/tree/main/computer/electron-demo
示例:
示例:通过 RDP 连接远程 Windows 桌面
一个可直接运行的 Demo:连接远程 Windows,打开「设置」并进入「Windows 更新」,最后输出一份结构化报告:https://github.com/web-infra-dev/midscene-example/tree/main/computer/rdp-demo
当运行 Midscene 的机器存在多条出站路由,且 RDP 服务器要求从指定本地源
IP 访问时,可以使用 localAddress。这里传入的是 IP 地址,不是网卡名。
设备管理
ComputerDevice.listDisplays(): Promise<DisplayInfo[]>
列出所有可用显示器。
返回:
示例:
checkComputerEnvironment(): Promise<EnvironmentCheck>
检查计算机环境是否正确配置。
返回:
示例:
ComputerAgent
ComputerAgent 类继承自 PageAgent<ComputerDevice>,并继承所有通用 agent 方法:
aiAct(action: string):使用 AI 执行操作aiQuery(query: string):使用 AI 提取信息aiAssert(assertion: string):使用 AI 断言条件aiWaitFor(condition: string):等待条件aiLocate(description: string):定位元素- 更多...
定位元素后,还可以使用即时操作(Instant Action)进行直接、确定性的控制:
aiTap()、aiDoubleClick()、aiRightClick()、aiHover():鼠标操作aiInput()、aiClearInput()、aiKeyboardPress():键盘操作aiScroll():滚动操作
详见 通用 API 参考。
可用操作
ComputerDevice 支持以下操作:
鼠标操作
Tap(点击)
在目标位置单击。
DoubleClick(双击)
在目标位置双击。

