如何在 Midscene YAML 脚本中把 aiQuery 与 aiAssert 结果输出到 JSON 文件
【免费下载链接】midsceneGUI Agent for E2E Testing项目地址: https://gitcode.com/GitHub_Trending/mid/midscene
如果你用 Midscene 的 YAML 脚本跑网页或移动端自动化,通常只关心流程本身,但有时还需要把脚本里aiQuery查到的数据和aiAssert断言的结果落盘,方便后续脚本解析或归档。Midscene 的 YAML 脚本支持在目标环境配置中设置output字段,指定一个 JSON 文件路径,运行时会把带name的aiQuery/aiAssert步骤结果写入该文件。本文以 Web 场景为主线,给出可照做的配置与执行步骤,并在末尾说明其他平台(Android、iOS、HarmonyOS、Computer)的对应配置位置。
准备条件
执行 YAML 脚本需要 Midscene CLI。按 YAML 脚本运行器文档 的要求:
- 终端运行的 Node.js 版本需为
20.19+、22.12+或24+。部分 CLI 执行路径使用 Rstest/Rspack 工具链,会拒绝20.17.0这类较旧的 Node 20 补丁版本,遇到Unsupported Node.js version报错时升级 Node.js 后重装依赖即可。 - 全局安装 CLI(推荐):
npm i -g @midscene/cli也可以按项目安装:npm i @midscene/cli --save-dev,之后用npx midscene执行。
- 配置模型服务的环境变量。可以在运行 CLI 的目录放一个
.env文件(dotenv 方式,值前不要加export),例如:
MIDSCENE_MODEL_BASE_URL="replace with your model service URL/v1" MIDSCENE_MODEL_API_KEY="replace with your API Key" MIDSCENE_MODEL_NAME="replace with your model name" MIDSCENE_MODEL_FAMILY="replace with your model family".env放在你执行命令的目录即可,不必与 YAML 文件同目录;这些值默认不会覆盖已有的全局环境变量,除非加--dotenv-override。
配置output与步骤的name
一个 YAML 脚本由目标环境部分(page、browser、web、android、ios、harmony、computer之一,不要混用)、可选的agent部分和tasks部分组成。以 Web 为例,output写在page(或browser/web)部分下:
page: url: https://www.bing.com # 输出 aiQuery/aiAssert 结果的 JSON 文件路径,可选 output: ./results.json tasks: - name: 搜索天气 flow: - ai: 搜索 "今日天气" - sleep: 3000 - name: 提取并断言结果 flow: - aiQuery: 提取搜索结果中展示的温度,格式为 JSON 对象 name: temperature - aiAssert: 结果中展示了天气信息 name: weather_assert errorMessage: 页面未出现天气信息其中几个关键点:
output: ./results.json中的路径是读者自行指定的:它决定结果 JSON 写到哪,文档中写作output: <path-to-output-file>,按需替换为你的目标路径。aiQuery的name是查询结果在 JSON 输出中的 key。文档提示:写aiQuery的提示词时,记得在 prompt 里描述输出结果的格式(上例要求返回 JSON 对象)。aiAssert的name是可选的,给断言一个名称后,该名称会作为 JSON 输出中的 key;errorMessage也是可选的,断言失败时打印该错误信息。- 文档对
name的说明是:带有name的步骤会把结果写入当前 YAML 运行结果和 JSON 输出中。所以想让某个结果出现在输出 JSON 里,就给它加name。
其他平台的目标部分同样支持output,写法一致,只是所在段落不同:
android: deviceId: s4ey59 output: ./results.json # 或 ios: / harmony: / computer: 部分下同样写 output: <JSON 文件路径>android的deviceId可选,默认使用第一个连接的设备;ios需要 WebDriverAgent 可用(wdaPort默认 8100);harmony依赖hdc连接的设备;computer面向桌面自动化。这些平台各自的完整选项见 使用 YAML 格式的自动化脚本 中对应小节。
执行脚本
midscene ./bing-search.yaml # 如果 Midscene 是项目内安装 npx midscene ./bing-search.yamlCLI 会打印执行进度,结束后生成可视化报告。
验证结果
执行完成后的检查点,均来自 YAML 脚本运行器文档 的"Analyze command-line output"一节:
- 确认
output指定的 JSON 文件已生成(如上面的./results.json),其中包含aiQuery/aiAssert步骤写入的结果;步骤用什么name,结果就出现在对应的 key 下。 - 输出目录中还包含:
- 由
--summary指定的 JSON 汇总(默认index.json),含所有脚本的执行状态与统计; - 每个 YAML 文件对应的单独执行结果(JSON);
- 每个脚本的可视化 HTML 报告。
- 由
aiAssert失败时脚本会按流程报错,并可打印你配置的errorMessage,此时可结合 HTML 报告定位是哪一步断言未通过。
限制与边界
output是各目标环境段落里的可选字段,不配置就不会有这份结果 JSON 输出。- 通过 JavaScript 调用
agent.runYaml()时,YAML 文件中只有tasks字段会被解析执行——agent 已在 JS 里初始化,output、agent等脚本级配置不会生效。需要把结果落到 JSON 文件时,走 CLI 执行。 - 文档提示当前 YAML 自动化属于老版方案,Midscene 已推出 Beta 阶段的 Midscene Test 新方案;新测试项目可另行参考其概览文档,本文内容针对老版 YAML 脚本运行器。
【免费下载链接】midsceneGUI Agent for E2E Testing项目地址: https://gitcode.com/GitHub_Trending/mid/midscene
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考