#编写独立自动化脚本
无需测试运行器,你也可以在 Node.js 脚本中直接调用 Midscene SDK,用于操作应用、提取数据或执行日常自动化流程。由脚本自身控制执行顺序、分支逻辑、错误处理和资源清理。
#使用前准备
- 运行环境:已安装 Node.js(版 本要求
^20.19.0 || ^22.12.0 || >=24.0.0)和 pnpm。可使用已有项目;新项目请先执行pnpm init(已有package.json可跳过)。 - 模型配置与验证:已完成模型配置并通过模型验证,且已将配置保存在项目的
.env文件或当前 Shell 环境中。 - 平台环境:已备好目标浏览器或设备,并完成连接与权限配置。移动端和桌面端请先完成 Android、iOS、HarmonyOS 或桌面端的环境准备;Chrome Bridge 需安装 Chrome 插件;Web / Playwright 的浏览器安装命令包含在下方示例中。
- (可选)试用 Playground:建议先在对应平台的 Playground中对目标界面试跑一次操作和断言,确认截图、交互与模型表现正常。
#跑通第一个示例
切换下方标签页选择目标平台,安装对应依赖,将代码保存为 demo.ts 并运行。各平台的示例均可独立运行。
以下示例会打开公开的 React TodoMVC 页面,添加一条名为 Try Midscene 的待办事项并将其标记为已完成,最后断言执行结果。请确保运行环境中的浏览器或设备能够访问该页面;移动端请提前走完默认浏览器的首次启动引导,桌面端请提前安装好浏览器。
1. 安装依赖
pnpm add -D @midscene/web playwright dotenv tsx
pnpm exec playwright install chromium2. 编写代码
将以下代码保存为 demo.ts,并确保同一目录下的 .env 文件中已包含验证通过的模型配置(脚本会通过 dotenv/config 自动加载)。
import 'dotenv/config';
import { chromium } from 'playwright';
import { PlaywrightAgent } from '@midscene/web/playwright';
async function main() {
const browser = await chromium.launch();
try {
const page = await browser.newPage();
await page.goto('https://todomvc.com/examples/react/dist/#/');
const agent = new PlaywrightAgent(page);
try {
await agent.aiWaitFor('The TodoMVC input is visible');
await agent.aiAct('Add a todo named Try Midscene, then mark it completed');
await agent.aiAssert('A todo named Try Midscene is marked completed');
} finally {
await agent.destroy();
}
} finally {
await browser.close();
}
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});3. 运行
(可选)运行前可先验证模型配置是否可用:
pnpm dlx @midscene/test@latest model verify在同一目录下运行脚本:
pnpm exec tsx demo.ts4. 更多文档
关于浏览器连接、平台特有能力与限制,请参阅 Web / Playwright SDK;如需在测试用例中使用 Midscene,请参阅接入 Playwright Test。
1. 安装依赖
pnpm add -D @midscene/web puppeteer dotenv tsx2. 编写代码
将以下代码保存为 demo.ts,并确保同一目录下的 .env 文件中已包含验证通过的模型配置(脚本会通过 dotenv/config 自动加载)。
import 'dotenv/config';
import puppeteer from 'puppeteer';
import { PuppeteerAgent } from '@midscene/web/puppeteer';
async function main() {
const browser = await puppeteer.launch();
try {
const page = await browser.newPage();
await page.goto('https://todomvc.com/examples/react/dist/#/');
const agent = new PuppeteerAgent(page);
try {
await agent.aiWaitFor('The TodoMVC input is visible');
await agent.aiAct('Add a todo named Try Midscene, then mark it completed');
await agent.aiAssert('A todo named Try Midscene is marked completed');
} finally {
await agent.destroy();
}
} finally {
await browser.close();
}
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});3. 运行
(可选)运行前可先验证模型配置是否可用:
pnpm dlx @midscene/test@latest model verify在同一目录下运行脚本:
pnpm exec tsx demo.ts4. 更多文档
关于连接配置、平台特有 能力与限制,请参阅 Puppeteer 接入指南。
1. 安装依赖
pnpm add -D @midscene/web dotenv tsx2. 编写代码
将以下代码保存为 demo.ts,并确保同一目录下的 .env 文件中已包含验证通过的模型配置(脚本会通过 dotenv/config 自动加载)。
运行前请保持 Chrome 处于打开状态,并在插件弹出提示时允许脚本连接。脚本执行结束后,会自动关闭其新建的标签页。
import 'dotenv/config';
import { AgentOverChromeBridge } from '@midscene/web/bridge-mode';
async function main() {
const agent = new AgentOverChromeBridge({ closeNewTabsAfterDisconnect: true });
try {
await agent.connectNewTabWithUrl('https://todomvc.com/examples/react/dist/#/');
await agent.aiWaitFor('The TodoMVC input is visible');
await agent.aiAct('Add a todo named Try Midscene, then mark it completed');
await agent.aiAssert('A todo named Try Midscene is marked completed');
} finally {
await agent.destroy();
}
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});3. 运行
(可选)运行前可先验证模型配置是否可用:
pnpm dlx @midscene/test@latest model verify在同一目录下运行脚本:
pnpm exec tsx demo.ts4. 更多文档
关于连接配置、平台特有能力与限制,请参阅 Chrome Bridge SDK。
1. 安装依赖
pnpm add -D @midscene/android dotenv tsx2. 编写代码
将以下代码保存为 demo.ts,并确保同一目录下的 .env 文件中已包含验证通过的模型配置(脚本会通过 dotenv/config 自动加载)。
默认连接第一台可用设备;如果连接了多台设备,请将 adb devices 列出的设备 ID 传给 agentFromAdbDevice(deviceId)。
import 'dotenv/config';
import { agentFromAdbDevice } from '@midscene/android';
async function main() {
const agent = await agentFromAdbDevice();
try {
await agent.launch('https://todomvc.com/examples/react/dist/#/');
await agent.aiWaitFor('The TodoMVC input is visible');
await agent.aiAct('Add a todo named Try Midscene, then mark it completed');
await agent.aiAssert('A todo named Try Midscene is marked completed');
} finally {
await agent.destroy();
}
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});3. 运行
(可选)运行前可先验证模型配置是否可用:
pnpm dlx @midscene/test@latest model verify在同一目录下运行脚本:
pnpm exec tsx demo.ts4. 更多文档
关于连接配置、平台特有能力与限制,请参阅 Android 接入指南。
1. 安装依赖
pnpm add -D @midscene/ios dotenv tsx2. 编写代码
将以下代码保存为 demo.ts,并确保同一目录下的 .env 文件中已包含验证通过的模型配置(脚本会通过 dotenv/config 自动加载)。
请将示例中的 wdaHost 和 wdaPort 替换为实际可用的 WebDriverAgent 服务地址。
import 'dotenv/config';
import { agentFromWebDriverAgent } from '@midscene/ios';
async function main() {
const agent = await agentFromWebDriverAgent({
wdaHost: 'localhost',
wdaPort: 8100,
});
try {
await agent.launch('https://todomvc.com/examples/react/dist/#/');
await agent.aiWaitFor('The TodoMVC input is visible');
await agent.aiAct('Add a todo named Try Midscene, then mark it completed');
await agent.aiAssert('A todo named Try Midscene is marked completed');
} finally {
await agent.destroy();
}
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});3. 运行
(可选)运行前可先验证模型配置是否可用:
pnpm dlx @midscene/test@latest model verify在同一目录下运行脚本:
pnpm exec tsx demo.ts4. 更多文档
关于连接配置、平台特有能力与限制,请参阅 iOS 接入指南。
1. 安装依赖
pnpm add -D @midscene/harmony dotenv tsx2. 编写代码
将以下代码保存为 demo.ts,并确保同一目录下的 .env 文件中已包含验证通过的模型配置(脚本会通过 dotenv/config 自动加载)。
默认连接第一台可用设备;如果连接了多台设备,请将 hdc list targets 列出的设备 ID 传给 agentFromHdcDevice(deviceId)。
import 'dotenv/config';
import { agentFromHdcDevice } from '@midscene/harmony';
async function main() {
const agent = await agentFromHdcDevice();
try {
await agent.launch('https://todomvc.com/examples/react/dist/#/');
await agent.aiWaitFor('The TodoMVC input is visible');
await agent.aiAct('Add a todo named Try Midscene, then mark it completed');
await agent.aiAssert('A todo named Try Midscene is marked completed');
} finally {
await agent.destroy();
}
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});3. 运行
(可选)运行前可先验证模型配置是否可用:
pnpm dlx @midscene/test@latest model verify在同一目录下运行脚本:
pnpm exec tsx demo.ts4. 更多文档
关于连接配置、平台特有能力与限制,请参阅 HarmonyOS 接入指南。
1. 安装依赖
pnpm add -D @midscene/computer dotenv tsx2. 编写代码

