v0.17.4 更新日志:让 AI 看见页面 DOM

数据查询 API 全面增强

为满足更多自动化和数据提取场景,以下 API 新增了 options 参数,支持更灵活的 DOM 信息和截图传递:

  • agent.aiQuery(dataDemand, options)
  • agent.aiBoolean(prompt, options)
  • agent.aiNumber(prompt, options)
  • agent.aiString(prompt, options)

新增options 参数

  • domIncluded:是否向模型发送精简后的 DOM 信息,默认值为 false。一般用于提取 UI 中不可见的属性,比如图片的链接。
  • screenshotIncluded:是否向模型发送截图。默认值为 true。

代码示例

// 提取通讯录中所有联系人的完整信息(包含隐藏的头像链接)
const contactsData = await agent.aiQuery(
  "{name: string, id: number, company: string, department: string, avatarUrl: string}[], extract all contact information including hidden avatarUrl attributes",
  { domIncluded: true }
);

// 检查通讯录中第一个联系人的 id 属性是否为 1
const isId1 = await agent.aiBoolean(
  "Is the first contact's id is 1?",
  { domIncluded: true }
);

// 获取第一个联系人的 ID(隐藏属性)
const firstContactId = await agent.aiNumber("First contact's id?", { domIncluded: true });

// 获取第一个联系人的头像 URL(页面上不可见的属性)
const avatarUrl = await agent.aiString(
  "What is the Avatar URL of the first contact?",
  { domIncluded: true }
);

新增右键点击能力

你有没有遇到过需要自动化右键操作的场景?现在,Midscene 支持了全新的 agent.aiRightClick() 方法!

功能

使用右键点击页面元素,适用于那些自定义了右键事件的场景。注意:Midscene 无法与浏览器原生菜单交互。

参数说明

  • locate: 用自然语言描述你要操作的元素
  • options: 可选,支持 deepThink(AI精细定位)、cacheable(结果缓存)

示例

// 在通讯录应用中右键点击联系人,触发自定义上下文菜单
await agent.aiRightClick("Alice Johnson", { deepThink: true });

// 然后可以点击菜单中的选项
await agent.aiTap("Copy Info"); // 复制联系人信息到剪贴板

示例及其报告

示例页面

示例报告

一个完整示例

在下面的报告文件中,我们展示了一个完整的示例,展示了如何使用新的 aiRightClick API 和新的查询参数来提取包含隐藏属性的联系人数据。

报告文件:puppeteer-2025-06-04_20-41-45-be8ibktz.html

对应代码可以参考我们的示例仓库:puppeteer-demo/extract-data.ts