如何在 Midscene YAML 脚本中把 aiQuery 与 aiAssert 结果输出到 JSON 文件
2026/9/15 14:01:55 网站建设 项目流程

如何在 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 文件路径,运行时会把带nameaiQuery/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 脚本由目标环境部分(pagebrowserwebandroidiosharmonycomputer之一,不要混用)、可选的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>,按需替换为你的目标路径。
  • aiQueryname是查询结果在 JSON 输出中的 key。文档提示:写aiQuery的提示词时,记得在 prompt 里描述输出结果的格式(上例要求返回 JSON 对象)。
  • aiAssertname是可选的,给断言一个名称后,该名称会作为 JSON 输出中的 key;errorMessage也是可选的,断言失败时打印该错误信息。
  • 文档对name的说明是:带有name的步骤会把结果写入当前 YAML 运行结果和 JSON 输出中。所以想让某个结果出现在输出 JSON 里,就给它加name

其他平台的目标部分同样支持output,写法一致,只是所在段落不同:

android: deviceId: s4ey59 output: ./results.json # 或 ios: / harmony: / computer: 部分下同样写 output: <JSON 文件路径>

androiddeviceId可选,默认使用第一个连接的设备;ios需要 WebDriverAgent 可用(wdaPort默认 8100);harmony依赖hdc连接的设备;computer面向桌面自动化。这些平台各自的完整选项见 使用 YAML 格式的自动化脚本 中对应小节。

执行脚本

midscene ./bing-search.yaml # 如果 Midscene 是项目内安装 npx midscene ./bing-search.yaml

CLI 会打印执行进度,结束后生成可视化报告。

验证结果

执行完成后的检查点,均来自 YAML 脚本运行器文档 的"Analyze command-line output"一节:

  1. 确认output指定的 JSON 文件已生成(如上面的./results.json),其中包含aiQuery/aiAssert步骤写入的结果;步骤用什么name,结果就出现在对应的 key 下。
  2. 输出目录中还包含:
    • --summary指定的 JSON 汇总(默认index.json),含所有脚本的执行状态与统计;
    • 每个 YAML 文件对应的单独执行结果(JSON);
    • 每个脚本的可视化 HTML 报告。

aiAssert失败时脚本会按流程报错,并可打印你配置的errorMessage,此时可结合 HTML 报告定位是哪一步断言未通过。

限制与边界

  • output是各目标环境段落里的可选字段,不配置就不会有这份结果 JSON 输出。
  • 通过 JavaScript 调用agent.runYaml()时,YAML 文件中只有tasks字段会被解析执行——agent 已在 JS 里初始化,outputagent等脚本级配置不会生效。需要把结果落到 JSON 文件时,走 CLI 执行。
  • 文档提示当前 YAML 自动化属于老版方案,Midscene 已推出 Beta 阶段的 Midscene Test 新方案;新测试项目可另行参考其概览文档,本文内容针对老版 YAML 脚本运行器。

【免费下载链接】midsceneGUI Agent for E2E Testing项目地址: https://gitcode.com/GitHub_Trending/mid/midscene

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询