拓睿思 · 节点文档

节点使用文档

把每一步用明白。查找节点、理解参数,再下载完整流程开始体验。

NODE HANDBOOK

从一个节点,到一条可运行的流程。

按用途查找节点,照着示例填写参数。每一项都包含操作步骤、适用场景和结果说明。

43个节点5个 Pro 节点4个流程示例

开始之前

第一次编排时,先了解这些通用规则。

输入、变量与 JSON

流程设置中的默认输入通过 ${input.url} 等读取,运行时可覆盖。输出变量名填 result,通过 ${vars.result} 引用。变量必须先写入再使用。

完整引用 "${vars.rows}" 保留数组或对象类型;"关键词:${input.keyword}" 会转成文本。JSON 参数编辑器中字符串需要双引号,布尔值和数字不加引号。不支持在引用中计算表达式。

列表循环体可读 ${item}、${item.title} 与从 0 开始的 ${index}。循环的 done 路径不要依赖循环体局部 item。

页面准备与定位器

页面节点需要先打开网页或切换到已命名页面。可在暂停调试画面中拾取定位器,也可填写 CSS(#keyword、button[type="submit"])或 Playwright 支持的 text=提交 等定位器。

点击、填写和单值提取尽量唯一匹配;列表提取允许多个匹配。网页脚本中的 document.querySelector 只接受 CSS,不接受 text= 定位器。

动态页面先等目标元素或接口;打开网页只等待 DOM 就绪。初始页面名是 main,弹窗通过点击并打开页面或等待并切换页面命名。

连接、条件与循环

普通节点的 next 表示下一步。条件节点只执行 true 或 false 的一条路径。foreach / forRange 的 body 执行循环体,done 执行循环结束后的步骤。异常处理的 try 执行保护段,next 执行成功路径,failed 执行失败路径。

循环体末端必须使用“本次循环结束”,next 连回所属循环;不要直接画普通节点回边。接口和鼠标动作完成后,使用“数据断言”确认业务结果。

请求、导出与运行产物

只取接口数据用网络请求;复用页面登录 Cookie 用浏览器会话请求;读取页面本来就发出的请求用响应监听,必须先注册再触发。

网址导出独立访问 URL,文本默认无需布局,PDF/PNG 自动渲染。当前页面 PDF / 保存截图保留已登录和交互后的页面状态。

纯数据、独立 HTTP 请求、网址导出和时间等待无需启动交互浏览器。文件描述不是文件正文;PDF/PNG 的实际文件到执行记录产物中下载。下载的完整流程示例可在“流程管理 → 导入流程”使用,example.com 的真实页面示例可直接试跑;业务接口示例需替换为自己的地址。

高级节点与 Pro

配置代理、拖动元素、图像位置匹配、图像坐标映射、区域文字识别需要有效 Pro 及以上订阅,并通过已授权 Studio 执行。免费用户可阅读本文档,不能添加、保存或运行包含这些节点的流程。

识别与输入完成不代表业务校验通过;请使用条件、响应或断言检查最终结果。

完整流程示例

下载后在“流程管理 → 导入流程”中打开,先检查输入和参数再运行。

网址 → Markdown

无需打开交互浏览器。可直接导入运行;修改导出格式即可体验 PDF 或 PNG。

开始 → 网址导出 → 输出结果 → 结束

页面 → PDF 归档

先等待页面内容再导出。可在等待之前加入自己的登录与查询步骤。

开始 → 打开网页 → 等待 → 当前页面 PDF → 输出结果 → 结束

列表 → 逐项输出

使用内置样例数据,可直接导入运行。实际业务中可用接口或提取列表节点替换“设置变量”。

开始 → 设置变量 → 遍历列表(body → 输出结果 → 本次循环结束 ↩;done → 结束)

API → 校验 → 保存 JSON

配置结构可直接导入。运行前替换 API URL;示例约定响应为 {code: 200, data: ...}。

开始 → 网络请求 → 数据断言 → JSON 处理 → 保存文件 → 输出结果 → 结束

显示 43 / 43 个节点

流程 / start

开始#

流程唯一入口

适用场景

定义执行入口接收每次运行的输入

使用方法

  1. 每个流程保留一个开始节点,将 next 出口连接到第一步。
  2. 在流程设置的默认输入中配置 url、keyword 等数据,运行时可以覆盖。

参数与默认值

此节点没有配置参数。

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{}

结果与连接

不写入变量;沿 next 出口继续。

next · 下一步

使用提示

  • 开始节点必须唯一,不能有入线。

流程 / end

结束#

完成当前流程

适用场景

正常完成流程汇合条件分支

使用方法

  1. 把最后一步的 next 或分支终点连接到结束节点。
  2. 需要展示的数据先经过“输出结果”,需要下载的内容先保存为文件。

参数与默认值

此节点没有配置参数。

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{}

结果与连接

结束当前路径;不自动输出所有变量。

没有出口

使用提示

  • 结束节点没有出口;循环体用“本次循环结束”返回,不用结束节点代替。

高级节点 / setProxy

配置代理PRO#

配置 moli 引擎代理,后续页面请求及网址导出使用该代理;空值关闭代理。

需要有效 Pro 及以上订阅,并通过已授权的拓睿思执行。免费用户可阅读说明,不能使用此节点。

适用场景

通过代理访问网页从代理服务接口获取地址后配置 moli循环切换代理出口

使用方法

  1. 输入代理地址,或通过变量选择器引用 ${input.proxy}、${vars.proxy} 等流程数据。
  2. 将节点放在需要代理的页面操作之前;后续配置代理节点可覆盖原配置,留空则关闭代理。

参数与默认值

配置代理参数
参数类型 / 可选值默认值
代理地址proxy

支持 host:port、HTTP(S)、SOCKS4/5 及用户名密码,可引用流程变量;留空关闭代理。不影响独立网络请求节点。

文本
"http://127.0.0.1:8080"

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "proxy": "http://127.0.0.1:8080"
}

结果与连接

更新本次运行的 moli 引擎代理,不写入变量;保留现有页面及登录状态。

next · 下一步

使用提示

  • 支持 host:port、http://、https://、socks://、socks5://、socks5h://、socks4://、socks4a://;SOCKS 目标域名由代理解析。
  • 用户名密码写成 http://user:password@host:port;特殊字符需要 URL 编码。
  • 作用于后续页面导航、页面 fetch/XHR、资源加载、下载及 moli 网址导出;独立“网络请求”节点不使用该配置。已发出的请求不会重新发送。
  • 空字符串关闭代理;变量缺失、类型错误或地址无效会停止流程。配置仅限本次运行,每次执行均需要有效 Pro 订阅。

浏览器 / goto

打开网页#

打开网址并等待 DOM 就绪

适用场景

访问查询页进入表单或登录页

使用方法

  1. 填写完整网址,或使用 ${input.url}。
  2. 连接页面操作或数据提取节点;动态内容出现前增加元素等待。

参数与默认值

打开网页参数
参数类型 / 可选值默认值
网址url必填文本文本
"${input.url}"

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "url": "https://example.com"
}

结果与连接

更新当前页面,等待 DOMContentLoaded;不写入变量。

next · 下一步

使用提示

  • DOM 就绪不代表异步接口和图片全部完成。只导出独立网址时可直接使用“网址导出”。

网络与文件 / dump

网址导出#

使用 Moli 原生 dump 导出独立网址;文本默认无需布局,PDF/图片自动渲染。

适用场景

批量网页转 Markdown独立网址转 PDF 或长图导出 HTML 与语义树

使用方法

  1. 填写独立 HTTP(S) 网址和导出格式。
  2. 文本使用 render=auto;PDF、PNG 会自动布局渲染,需要时也可为文本选 enabled。
  3. 填写不含扩展名的产物名称,选择输出变量;用“输出结果”读取 ${vars.dumpResult.body}。

参数与默认值

网址导出参数
参数类型 / 可选值默认值
网址url必填文本文本
"${input.url}"
导出格式format选项
markdown · Markdown
json · JSON
html · HTML
pdf · PDF
screenshot · PNG(视口)
screenshot_full · PNG(完整页面)
semantic_tree · 语义树 JSON
semantic_tree_text · 语义树文本
"markdown"
渲染方式render选项
auto · 自动(仅 PDF / PNG 渲染)
enabled · 启用布局渲染
"auto"
禁用页面 JSdisableJs布尔值
false
产物名称(自动扩展名)name必填文本文本
"page"
超时(毫秒)timeoutMs数字
30000
最大字节数maxBytes数字
1000000
保存到变量variable必填文本文本
"dumpResult"

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "url": "https://example.com",
  "format": "markdown",
  "render": "auto",
  "disableJs": false,
  "name": "article",
  "timeoutMs": 30000,
  "maxBytes": 1000000,
  "variable": "dumpResult"
}

结果与连接

${vars.dumpResult} 为 {format, rendered, body, artifact}。文本的 body 是字符串;json/semantic_tree 为原生 JSON;PDF/PNG 的 body 为 null。全部格式都会保存可下载产物。

next · 下一步

使用提示

  • 支持 markdown、json、html、pdf、screenshot、screenshot_full、semantic_tree、semantic_tree_text 八种格式。
  • 文本默认不生成布局,仍加载文档并执行页面 JS;disableJs=true 可禁用 JS。
  • 独立访问不继承当前页面 Cookie 或点击状态;登录后导出使用“当前页面 PDF”或“保存截图”。json 是 Moli 原生输出封装,业务接口 JSON 请用“网络请求”。
  • 文本上限 1 MB,PDF/PNG 上限 10 MB;maxBytes 默认 1 MB。产物名称使用字母、数字、短横线、下划线,最长 60 字符。

浏览器 / pdf

当前页面 PDF#

把当前页面保存为 PDF,保留已登录及交互后的页面状态。

适用场景

保存登录后报表把查询结果归档为 PDF

使用方法

  1. 先打开网页,完成登录、查询或页面切换。
  2. 等待要保存的内容显示,填写不含 .pdf 的产物名称。
  3. 运行后到产物列表下载,或输出 ${vars.pdfFile} 查看文件描述。

参数与默认值

当前页面 PDF参数
参数类型 / 可选值默认值
产物名称(自动 .pdf)name必填文本文本
"page"
保存到变量variable必填文本文本
"pdfFile"

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "name": "report",
  "variable": "pdfFile"
}

结果与连接

变量保存 {name, mime, size, sha256} 文件描述,文件位于本次运行产物。

next · 下一步

使用提示

  • 按当前页面的打印布局生成 PDF,包含背景;显示效果可能与屏幕布局不同。

浏览器 / fill

填写输入框#

定位并填写输入框

适用场景

搜索关键词填写帐号或表单字段

使用方法

  1. 填写可唯一定位输入框的定位器。
  2. 填写文本或 ${input.keyword},运行时会替换原输入内容。

参数与默认值

填写输入框参数
参数类型 / 可选值默认值
元素定位器selector必填文本文本
"body"
内容value文本
"${input.keyword}"

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "selector": "#keyword",
  "value": "${input.keyword}"
}

结果与连接

修改输入框内容,不写入变量。

next · 下一步

使用提示

  • 用于可编辑输入框;选择框使用“选择选项”,提交可连接“按键”或“点击元素”。

浏览器 / click

点击元素#

通过 Playwright 定位并点击

适用场景

提交表单展开菜单翻页

使用方法

  1. 定位按钮或链接,可在暂停调试画面中拾取。
  2. 需要接口结果时改用“点击并等待响应”,会打开新页时改用“点击并打开页面”。

参数与默认值

点击元素参数
参数类型 / 可选值默认值
元素定位器selector必填文本文本
"body"

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "selector": "button[type=\"submit\"]"
}

结果与连接

完成点击;不保证业务处理成功。

next · 下一步

使用提示

  • 定位器尽量唯一。点击之后用等待、响应或断言确认结果。

高级节点 / drag

拖动元素PRO#

定位按下点,按范围内的平滑变速轨迹拖动到指定坐标;完成输入不代表业务验证成功。

需要有效 Pro 及以上订阅,并通过已授权的拓睿思执行。免费用户可阅读说明,不能使用此节点。

适用场景

自有页面滑块拖放排序调整可拖动控件

使用方法

  1. 选择可拖动元素,设置按下点 start。
  2. 设置 target:offset 为相对按下点的位移,viewport 为视口坐标;也可整体引用 ${vars.dragTarget.target}。
  3. 设置允许位移范围 bounds 和轨迹参数,再用响应或断言检查业务结果。

参数与默认值

拖动元素参数
参数类型 / 可选值默认值
元素定位器selector必填文本文本
"body"
按下位置startJSON
{
  "mode": "center"
}
拖动终点targetJSON
{
  "mode": "offset",
  "x": 180,
  "y": 0
}
允许位移范围boundsJSON
{
  "minX": 0,
  "maxX": 300,
  "minY": -3,
  "maxY": 3
}
轨迹配置trajectoryJSON
{
  "profile": "natural",
  "durationMs": {
    "min": 800,
    "max": 1300
  },
  "steps": 60,
  "jitterPx": 1,
  "overshootPx": 0,
  "holdBeforeMs": 80,
  "holdAfterMs": 60,
  "seed": null
}
超时(毫秒)timeoutMs数字
30000
保存到变量variable必填文本文本
"dragResult"

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "selector": "#slider",
  "start": {
    "mode": "center"
  },
  "target": {
    "mode": "offset",
    "x": 180,
    "y": 0
  },
  "bounds": {
    "minX": 0,
    "maxX": 300,
    "minY": -3,
    "maxY": 3
  },
  "trajectory": {
    "profile": "natural",
    "durationMs": {
      "min": 800,
      "max": 1300
    },
    "steps": 60,
    "jitterPx": 1,
    "overshootPx": 0,
    "holdBeforeMs": 80,
    "holdAfterMs": 60,
    "seed": null
  },
  "timeoutMs": 30000,
  "variable": "dragResult"
}

结果与连接

dragResult 保存本次拖动的执行信息;完成鼠标输入不代表业务校验通过。

next · 下一步

使用提示

  • 需要有效 Pro 及以上订阅,并通过已授权 Studio 执行。
  • 坐标单位为 CSS 像素;bounds 限制整条按住后的路径。natural 支持变速和有限扰动,seed 可复现计划轨迹。
  • 从图像映射得到目标时应整体引用 target,保留页面几何校验信息;页面刷新后需重新匹配。

浏览器 / clickResponse

点击并等待响应#

先监听接口,再点击,响应 JSON 写入变量

适用场景

读取查询按钮触发的接口提交后获取业务结果

使用方法

  1. 指定点击元素和响应 URL 包含的片段。
  2. 节点会先监听再点击,把第一个匹配响应的 JSON 正文保存到变量。

参数与默认值

点击并等待响应参数
参数类型 / 可选值默认值
元素定位器selector必填文本文本
"body"
响应 URL 包含urlPattern必填文本文本
"/api/"
保存到变量variable必填文本文本
"result"

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "selector": "#search",
  "urlPattern": "/api/search",
  "variable": "searchResult"
}

结果与连接

${vars.searchResult} 直接是响应 JSON 正文,不需要再取 body。非 2xx 会失败。

next · 下一步

使用提示

  • 只按 URL 包含匹配;需要方法、资源类型、文件或导航前监听时,用“开始监听响应”与“读取监听响应”。

浏览器 / clickPopup

点击并打开页面#

等待弹窗,命名并切换到新页面

适用场景

打开详情页接管弹窗

使用方法

  1. 定位会打开新窗口或标签的链接。
  2. 填写页面名称,节点先等待 popup 事件再点击,随后命名并切换。

参数与默认值

点击并打开页面参数
参数类型 / 可选值默认值
元素定位器selector必填文本文本
"body"
页面名称pageName必填文本文本
"popup"

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "selector": "a[target=\"_blank\"]",
  "pageName": "detail"
}

结果与连接

新页面成为当前页面,可通过 detail 名称再次切换。

next · 下一步

使用提示

  • 普通同页跳转不会产生 popup;如果需要先读接口再接管页面,使用“等待并切换页面”。

网络与文件 / watchResponse

开始监听响应#

先监听再导航/点击;捕获当前会话及弹窗的一个匹配响应,不重复发请求。超时从注册开始计算。

适用场景

捕获首屏接口接收弹窗请求保存已加载的 PDF 或图片响应

使用方法

  1. 在触发请求的打开网页或点击之前注册监听,并给监听命名。
  2. 设置 URL 匹配、请求方法、资源类型、预期状态及正文类型。
  3. 触发请求后,连接同名“读取监听响应”消费结果。

参数与默认值

开始监听响应参数
参数类型 / 可选值默认值
监听名称name必填文本文本
"response"
响应 URLurlPattern必填文本文本
"/api/user/getInfo"
URL 匹配match选项
includes · 包含
exact · 完全匹配
"includes"
请求方法method选项
GET
POST
PUT
PATCH
DELETE
HEAD
ANY · 任意方法
"GET"
资源类型resourceType选项
any · 任意类型
xhr · XHR
fetch · Fetch
document · 文档
image · 图片
script · 脚本
stylesheet · 样式表
font · 字体
media · 媒体
other · 其他
"any"
正文类型format选项
json · JSON
text · UTF-8 文本
file · 文件
"json"
文件名(含扩展名)filename必填文本文本
"response.bin"
预期 HTTP 状态(0 为任意 2xx)status数字
200
超时(毫秒)timeoutMs数字
30000
最大字节数maxBytes数字
1000000

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "name": "search",
  "urlPattern": "/api/search",
  "match": "includes",
  "method": "POST",
  "resourceType": "fetch",
  "format": "json",
  "filename": "response.bin",
  "status": 200,
  "timeoutMs": 30000,
  "maxBytes": 1000000
}

结果与连接

注册一个待消费监听,不立即写入变量。format=file 时在读取阶段返回文件产物。

next · 下一步

使用提示

  • 监听当前浏览器上下文及弹窗,不会重新发送请求;超时从注册时开始,最多捕获一个匹配响应。
  • 所有监听应在流程结束前读取。status=0 接受任意 2xx,其他值要求精确匹配。

网络与文件 / awaitResponse

读取监听响应#

消费一次已注册的监听,保存响应元数据及 body;文件正文保存为产物描述。

适用场景

读取预先监听的数据获取页面资源文件

使用方法

  1. 先注册同名监听,再触发页面请求。
  2. 此处填写监听名称和输出变量名,等待并消费结果。

参数与默认值

读取监听响应参数
参数类型 / 可选值默认值
监听名称name必填文本文本
"response"
保存到变量variable必填文本文本
"response"

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "name": "search",
  "variable": "response"
}

结果与连接

${vars.response} 含响应元数据和 body;JSON 正文通过 ${vars.response.body} 读取,文件类型的 body 为文件描述。

next · 下一步

使用提示

  • 监听只可消费一次;不能在注册之前读取,也不能用同一个结果重复消费。

网络与文件 / browserRequest

浏览器会话请求#

在当前页面执行 fetch,复用 Moli 网络与 Cookie;遵守 CORS,失败不自动重试。

适用场景

复用登录 Cookie 调用接口在站点会话中获取业务数据

使用方法

  1. 先打开与接口相关的页面。
  2. 填写接口 URL、方法、headers、body 和正文类型。
  3. 通过 ${vars.response.body} 处理结果。

参数与默认值

浏览器会话请求参数
参数类型 / 可选值默认值
请求 URLurl必填文本文本
"${input.apiUrl}"
请求方法method选项
GET
POST
PUT
PATCH
DELETE
HEAD
"GET"
请求头(JSON 对象)headersJSON
{}
请求正文(JSON 或文本;null 为无)bodyJSON
null
正文类型format选项
json · JSON
text · UTF-8 文本
"json"
超时(毫秒)timeoutMs数字
30000
最大字节数maxBytes数字
1000000
保存到变量variable必填文本文本
"response"

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "url": "https://example.com/api/items",
  "method": "GET",
  "headers": {},
  "body": null,
  "format": "json",
  "timeoutMs": 30000,
  "maxBytes": 1000000,
  "variable": "response"
}

结果与连接

保存 {url, status, method, contentType, body},业务内容在 body 中;非 2xx 会失败。

next · 下一步

使用提示

  • 在当前页面执行 fetch,复用浏览器 Cookie,受页面 CORS 限制;失败不自动重试。
  • headers 为 JSON 对象,body 为 JSON 或文本,GET/HEAD 使用 null。无需浏览器会话时选择“网络请求”。

网络与文件 / httpRequest

网络请求#

独立 HTTP Client,直接请求外部系统,不受页面 CORS 限制,不携带浏览器 Cookie。不自动重试或跟随重定向。

适用场景

调用外部 API请求业务 JSON连接自动化与其他系统

使用方法

  1. 填写绝对 HTTP(S) 地址与方法,无需先打开网页。
  2. 按需填写请求头和正文;对象正文会作为 JSON 发送。
  3. 选择响应类型,用 ${vars.response.status} 和 ${vars.response.body} 处理结果。

参数与默认值

网络请求参数
参数类型 / 可选值默认值
请求 URLurl必填文本

填写完整 HTTP(S) 地址,可引用输入或变量,例如 https://api.example.com/items。

文本
"${input.apiUrl}"
请求方法method选项
GET
POST
PUT
PATCH
DELETE
HEAD
OPTIONS
"GET"
请求头(JSON 对象)headers

例如 {"Authorization":"Bearer ${input.token}"},也可填写完整变量引用。

JSON
{}
请求正文(JSON 或文本;null 为无)body

对象自动发送为 JSON;原始文本需加双引号。支持变量引用,GET/HEAD 请使用 null。

JSON
null
响应格式format选项
json · JSON
text · UTF-8 文本
"json"
非 2xx 状态时失败failOnHttpError

关闭后可用响应的 status、ok 和 body 做条件分支。重定向不会自动跟随。

布尔值
true
超时(毫秒)timeoutMs数字
30000
最大字节数maxBytes数字
1000000
保存到变量variable必填文本

通过 ${vars.response.status}、${vars.response.headers}、${vars.response.body} 读取结果。

文本
"response"

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "url": "https://example.com/api/items",
  "method": "POST",
  "headers": {
    "Content-Type": "application/json"
  },
  "body": {
    "keyword": "${input.keyword}"
  },
  "format": "json",
  "failOnHttpError": true,
  "timeoutMs": 30000,
  "maxBytes": 1000000,
  "variable": "response"
}

结果与连接

保存 {url, status, ok, headers, body} 等响应信息,业务内容在 body 中。

next · 下一步

使用提示

  • 独立 HTTP Client,不带浏览器 Cookie,不受页面 CORS 限制;不自动重试或跟随重定向。
  • 默认非 2xx 失败;关闭 failOnHttpError 后可按 status/ok 分支,但网络错误、超时及 JSON 解析错误仍会失败。
  • timeoutMs 默认 30000 毫秒,maxBytes 默认 1 MB;支持的方法以参数表为准。

网络与文件 / downloadResource

下载资源#

当前页面 fetch 已知 PDF/图片 URL 并保存,遵守 CORS;已加载资源可用响应监听避免重复请求。

适用场景

下载已知 PDF 地址保存图片资源

使用方法

  1. 先打开可访问资源的页面,填写资源 URL。
  2. 指定含扩展名的文件名与大小上限。
  3. 在运行产物查看文件,或通过变量传递文件描述。

参数与默认值

下载资源参数
参数类型 / 可选值默认值
资源 URLurl必填文本文本
"${input.resourceUrl}"
文件名(含扩展名)filename必填文本文本
"resource.pdf"
超时(毫秒)timeoutMs数字
30000
最大字节数maxBytes数字
10000000
保存到变量variable必填文本文本
"file"

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "url": "https://example.com/report.pdf",
  "filename": "report.pdf",
  "timeoutMs": 30000,
  "maxBytes": 10000000,
  "variable": "file"
}

结果与连接

file 变量保存 {name, mime, size, sha256}。

next · 下一步

使用提示

  • 在当前页面 fetch,复用会话并遵守 CORS;会再次请求资源。对已经加载的资源,可在加载前注册响应监听来避免重复请求。
  • 默认与最大正文限制为 10 MB。文件名不是本机任意路径。

网络与文件 / clickDownload

点击并下载#

先等待浏览器下载事件再点击;适合 attachment 或 download 链接,文件保存到本次运行。

适用场景

导出报表附件点击带 download 属性的链接

使用方法

  1. 定位会触发浏览器下载的按钮或链接。
  2. 指定产物文件名,节点会先等待下载事件再点击。

参数与默认值

点击并下载参数
参数类型 / 可选值默认值
元素定位器selector必填文本文本
"body"
文件名(含扩展名)filename必填文本文本
"download.pdf"
超时(毫秒)timeoutMs数字
30000
最大字节数maxBytes数字
10000000
保存到变量variable必填文本文本
"file"

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "selector": "#export",
  "filename": "report.pdf",
  "timeoutMs": 30000,
  "maxBytes": 10000000,
  "variable": "file"
}

结果与连接

file 变量保存下载文件的描述;文件在本次运行产物中。

next · 下一步

使用提示

  • 用于 attachment 或 download 下载事件;在页面中直接预览 PDF 不一定产生下载事件,可改用资源下载或监听。
  • 默认与最大文件限制为 10 MB。

网络与文件 / saveFile

保存文件#

将 JSON、UTF-8 文本或 base64 保存为运行产物,返回文件名、大小与 SHA-256。

适用场景

导出业务 JSON保存文本内容保存 base64 二进制

使用方法

  1. 填写含扩展名的文件名,选择 json、text 或 base64 编码。
  2. 将 value 设为静态 JSON 或完整变量引用,运行后下载产物。

参数与默认值

保存文件参数
参数类型 / 可选值默认值
文件名(含扩展名)filename必填文本文本
"data.json"
文件内容编码encoding选项
json · JSON
text · UTF-8 文本
base64
"json"
文件内容valueJSON
"${vars.result}"
保存到变量variable必填文本文本
"file"

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "filename": "data.json",
  "encoding": "json",
  "value": "${vars.result}",
  "variable": "file"
}

结果与连接

file 变量保存文件名、MIME、大小、SHA-256 等描述。

next · 下一步

使用提示

  • json 编码会序列化值;text 需要字符串;base64 需要合法 base64 字符串。
  • 使用受支持的扩展名,例如 json、txt、md、html、pdf、png;不填写绝对路径。HTML 产物以下载附件提供。

数据 / jsonData

JSON 处理#

解析、序列化或按点路径取值(如 data.rows.0);缺失路径返回 null,禁止执行表达式。

适用场景

提取接口列表解析 JSON 文本生成可保存的 JSON 字符串

使用方法

  1. 选择 pick、parse 或 stringify。
  2. pick 填点路径,如 data.rows.0;parse 传 JSON 文本;stringify 传 JSON 值。
  3. 把结果保存到变量,供后续循环或输出使用。

参数与默认值

JSON 处理参数
参数类型 / 可选值默认值
处理方式mode选项
pick · 按路径取值
parse · 解析 JSON 文本
stringify · 转为 JSON 文本
"pick"
输入值valueJSON
"${vars.response.body}"
点路径(空为整体)path文本
"data"
保存到变量variable必填文本文本
"data"

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "mode": "pick",
  "value": "${vars.response.body}",
  "path": "data.rows",
  "variable": "rows"
}

结果与连接

保存提取值、解析值或序列化后的字符串;pick 的缺失路径返回 null。

next · 下一步

使用提示

  • 路径只支持点路径和数字数组下标,不支持 JSONPath、通配符或可执行表达式。空路径表示整体。

数据 / assert

数据断言#

验证业务 code、登录态或数据完整性,不满足时明确停止当前流程。

适用场景

检查业务 code确认登录成功校验返回数据

使用方法

  1. 设置左值、比较方式和右值。
  2. 填写清晰的失败提示,放在后续业务操作之前。

参数与默认值

数据断言参数
参数类型 / 可选值默认值
左值leftJSON
"${vars.response.body.code}"
比较方式operator选项
equals · 等于
notEquals · 不等于
contains · 包含
greaterThan · 大于
exists · 存在
empty · 为空
"equals"
右值rightJSON
200
失败提示message必填文本文本
"数据校验失败"

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "left": "${vars.response.body.code}",
  "operator": "equals",
  "right": 200,
  "message": "业务接口返回失败"
}

结果与连接

满足时继续;不满足时以给定提示停止流程,不写入变量。

next · 下一步

使用提示

  • HTTP 成功不代表业务成功。equals 比较值与类型;数字 200 与字符串 "200" 不相等。exists 表示非 null。

浏览器 / closePages

关闭页面#

关闭当前页,或保留指定命名页并关闭其余页面,控制弹窗数量。

适用场景

处理弹窗后回到主页面限制批量查询产生的页数

使用方法

  1. 指定需要保留或切回的已命名页面,例如 main。
  2. others 关闭其余所有页;current 只关闭当前页并切回指定页。

参数与默认值

关闭页面参数
参数类型 / 可选值默认值
关闭范围mode选项
others · 保留指定页,关闭其余
current · 关闭当前页
"others"
保留/切回页面名称pageName必填文本文本
"main"

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "mode": "others",
  "pageName": "main"
}

结果与连接

关闭指定范围页面并切换到保留页。

next · 下一步

使用提示

  • 保留页必须存在且仍打开;current 模式不能把当前页同时设为保留页。

浏览器 / select

选择选项#

选择原生 select 选项值

适用场景

选择表单状态切换原生下拉选项

使用方法

  1. 定位原生 select 元素。
  2. 填写 option 的 value,例如 published,而不是默认使用显示文本。

参数与默认值

选择选项参数
参数类型 / 可选值默认值
元素定位器selector必填文本文本
"body"
选项值value必填文本文本
""

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "selector": "#status",
  "value": "published"
}

结果与连接

更新选择值,不写入变量。

next · 下一步

使用提示

  • 自定义下拉组件通常不是 select,需要使用点击展开和点击选项。

浏览器 / check

设置勾选#

设置复选框或单选框状态

适用场景

设置筛选复选项确认表单勾选状态

使用方法

  1. 定位 checkbox 或 radio 输入控件。
  2. 设置 checked=true 勾选,false 取消勾选。

参数与默认值

设置勾选参数
参数类型 / 可选值默认值
元素定位器selector必填文本文本
"body"
勾选checked布尔值
true

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "selector": "#remember",
  "checked": true
}

结果与连接

把控件设置到目标状态,不是无条件反转。

next · 下一步

使用提示

  • 取消单选项可能受控件约束;自定义控件需确认实际可操作元素。

浏览器 / press

按键#

向元素发送按键,例如 Enter

适用场景

回车提交键盘切换焦点关闭浮层

使用方法

  1. 定位要接收按键的元素。
  2. 填写 Enter、Tab、Escape 或组合键,如 Control+A。

参数与默认值

按键参数
参数类型 / 可选值默认值
元素定位器selector必填文本文本
"body"
按键key必填文本文本
"Enter"

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "selector": "#keyword",
  "key": "Enter"
}

结果与连接

向目标发送键盘输入,不写入变量。

next · 下一步

使用提示

  • 提交后仍需等待页面或响应;修饰键应按目标平台选择 Control 或 Meta。

浏览器 / scroll

滚动页面#

按像素滚动当前页面

适用场景

触发页面懒加载查看长页下方内容

使用方法

  1. 填写水平 x 与垂直 y 距离,单位为 CSS 像素。
  2. 正数向右或向下,负数向左或向上;滚动后等待懒加载内容。

参数与默认值

滚动页面参数
参数类型 / 可选值默认值
水平距离x数字
0
垂直距离y数字
500

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "x": 0,
  "y": 600
}

结果与连接

滚动当前 window,不写入变量。

next · 下一步

使用提示

  • 这是相对滚动距离;页面内独立滚动容器可用网页脚本针对容器处理。

浏览器 / wait

等待#

等待元素、网址或指定时间

适用场景

等异步内容显示等待跳转完成等待短暂动画

使用方法

  1. selector:等待定位器首个匹配元素达到 visible、attached、hidden 或 detached。
  2. url:填写目标 URL 或 Playwright URL 模式,例如 **/results。
  3. time:value 填毫秒,例如 500。

参数与默认值

等待参数
参数类型 / 可选值默认值
等待类型mode选项
selector · 页面元素
url · 网址
time · 时长
"selector"
定位器 / URL / 毫秒value必填文本文本
"body"
元素状态state选项
visible · 可见
attached · 已挂载
hidden · 隐藏
detached · 已移除
"visible"

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "mode": "selector",
  "value": "#results",
  "state": "visible"
}

结果与连接

条件达到后继续,不写入变量。

next · 下一步

使用提示

  • 优先等待元素或 URL;固定时间不判断业务状态。time 支持 0–300000 毫秒,且不需要交互浏览器。

数据 / extract

提取文本或属性#

提取一个元素的文本或属性

适用场景

读取标题提取链接地址读取图片 URL

使用方法

  1. 定位一个元素。
  2. attribute 留空读取 innerText;填 href、src 等读取对应属性。
  3. 填写保存变量名,在后续通过 ${vars.title} 引用。

参数与默认值

提取文本或属性参数
参数类型 / 可选值默认值
元素定位器selector必填文本文本
"body"
属性名(空为文本)attribute文本
""
保存到变量variable必填文本文本
"result"

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "selector": "h1",
  "attribute": "",
  "variable": "title"
}

结果与连接

保存文本字符串;属性不存在时可能为 null。

next · 下一步

使用提示

  • 多个元素请改用“提取列表”,或收窄定位器。取到的属性值可能是相对地址。

数据 / extractList

提取列表#

按定位器提取文本数组

适用场景

批量读取结果标题收集表格单元格文本

使用方法

  1. 定位所有目标元素,例如 .result .title。
  2. 先等待列表就绪,再提取到 rows 等变量,交给遍历节点。

参数与默认值

提取列表参数
参数类型 / 可选值默认值
元素定位器selector必填文本文本
"body"
保存到变量variable必填文本文本
"rows"

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "selector": ".result .title",
  "variable": "rows"
}

结果与连接

${vars.rows} 为文本数组,未匹配到元素时为空数组。

next · 下一步

使用提示

  • 读取 textContent,不自动等待列表条数稳定;需要结构化字段时可用网页脚本。

数据 / setVariable

设置变量#

保存 JSON 值或变量引用

适用场景

初始化业务数据保存中间值组装输出对象

使用方法

  1. 填写变量名称,仅填 result 等名字,不加 vars. 或 ${}。
  2. value 填 JSON 值或完整变量引用,后续通过 ${vars.result} 使用。

参数与默认值

设置变量参数
参数类型 / 可选值默认值
保存到变量variable必填文本文本
"result"
值valueJSON
""

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "variable": "result",
  "value": {
    "title": "${vars.title}",
    "source": "${input.url}"
  }
}

结果与连接

写入或覆盖同名流程变量。

next · 下一步

使用提示

  • 完整引用保留数组、对象、数字等类型;嵌入文本中的引用会转为字符串。

流程 / condition

条件分支#

按值比较,走 true 或 false 出口

适用场景

按业务 code 分流判断数据是否为空按匹配结果决定是否继续

使用方法

  1. 设置 left、operator、right。
  2. 把 true 接满足条件的路径,把 false 接否则路径;两条路径可汇合到后续节点。

参数与默认值

条件分支参数
参数类型 / 可选值默认值
左值leftJSON
"${vars.result}"
比较方式operator选项
equals · 等于
notEquals · 不等于
contains · 包含
greaterThan · 大于
exists · 存在
empty · 为空
"equals"
右值rightJSON
""

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "left": "${vars.response.body.code}",
  "operator": "equals",
  "right": 200
}

结果与连接

只执行一个出口:true 或 false。

true · 满足条件false · 否则

使用提示

  • 不要把两个出口当成并行执行。equals 严格比较值与类型;contains 支持文本包含或数组成员;exists 为非 null;empty 支持 null、空文本、空数组和空对象。

流程 / errorHandler

异常处理#

保护一组节点,按错误类型退避重试,或从失败出口继续处理。

适用场景

超时后重新查询限流冷却后重试记录异常并走备用路径

使用方法

  1. 把需要一起执行或重试的步骤接在「保护段」出口,所有正常路径最终连到「保护段结束」。
  2. 「成功」连接正常后续步骤。「失败」可接条件分支,按 ${vars.error.type} 或 ${vars.error.httpStatus} 分流。
  3. 需要自动重试时,选择错误类型并设置额外次数和初始、最大退避时长。

参数与默认值

异常处理参数
参数类型 / 可选值默认值
错误变量variable必填文本文本
"error"
最多额外重试maxRetries数字
0
可重试的错误类型retryOnJSON
[]
初始退避时长initialDelayMs数字
1000
最大退避时长maxDelayMs数字
120000

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "variable": "error",
  "maxRetries": 3,
  "retryOn": [
    "timeout",
    "network",
    "rate_limit"
  ],
  "initialDelayMs": 1000,
  "maxDelayMs": 120000
}

结果与连接

成功时错误变量为 null。失败出口可读取 type、message、nodeId、attempts、httpStatus 和 retryAfterMs。

next · 下一步try · tryfailed · failed

使用提示

  • 失败出口留空时向外抛出错误,可由外层保护段处理。失败分支中的异常也由外层决定。
  • 重试从保护段的第一步重新执行。已完成的点击、写入、文件和输出仍然存在,请选用可安全重复的步骤。
  • 遇到 429 时遵守 Retry-After,未提供时至少等待 60 秒。服务端等待要求超过最大退避时长时走失败出口。

流程 / tryEnd

保护段结束#

结束当前保护段,回到异常处理容器的成功出口。

适用场景

明确保护段的完成边界汇合保护段内的正常条件分支

使用方法

  1. 将保护段的正常路径连接到此节点,再用所属容器的「成功」出口连接后续步骤。

参数与默认值

此节点没有配置参数。

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{}

结果与连接

完成当前保护段,不写入变量。

没有出口

使用提示

  • 此节点只能放在异常处理容器的保护段内,没有出线。

流程 / foreach

遍历列表#

body 中使用 ${item} 和 ${index},循环结束节点连回本节点

适用场景

逐条处理查询结果批量导出网址逐项输出数据

使用方法

  1. items 引用数组,例如 ${vars.rows}。
  2. body 接循环体,在其中使用 ${item}、${item.title}、${index}(从 0 开始)。
  3. 循环体末端接“本次循环结束”,再连回本遍历节点;done 接全部完成后的步骤。

参数与默认值

遍历列表参数
参数类型 / 可选值默认值
列表itemsJSON
"${vars.rows}"
最大条数(1–1000)maxItems数字
100

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "items": "${vars.rows}",
  "maxItems": 100
}

结果与连接

顺序执行每一项;列表为空时直接走 done。

body · 循环体done · 循环结束

使用提示

  • maxItems 为 1–1000;列表超过上限会失败,不会自动截断。循环变量 item/index 只在循环体中有效。

流程 / loopEnd

本次循环结束#

next 连回所属遍历节点

适用场景

完成当前项并进入下一项明确嵌套循环的返回边界

使用方法

  1. 放在 foreach 或 forRange 循环体的末端。
  2. 将 next 直接连回所属循环节点;循环的 done 出口继续连接外层步骤。

参数与默认值

此节点没有配置参数。

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{}

结果与连接

结束当前轮循环体,返回所属循环进行下一轮。

next · 下一步

使用提示

  • 只能位于循环体,不能随意用普通回边创建无限循环。

流程 / forRange

数值循环#

按次数或包含终点的区间循环;支持递增/递减。循环值保存到指定变量,body 使用循环结束节点返回。

适用场景

按页码请求执行固定次数生成递增或递减编号

使用方法

  1. count 模式设置 start、count、step;end 模式设置 start、end、step,结束值包含在范围内。
  2. 选择 number 或 string 作为循环值类型,并命名变量。
  3. body 接循环体,末端用“本次循环结束”连回;done 接循环后的步骤。

参数与默认值

数值循环参数
参数类型 / 可选值默认值
循环方式mode选项
count · 按次数
end · 按结束值
"count"
起始值startJSON
1
结束值(含)endJSON
3
次数countJSON
3
步长stepJSON
1
循环值类型valueType选项
number · 数字
string · 文本
"number"
保存到变量variable必填文本文本
"number"
最大次数(1–1000)maxIterations数字
100

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "mode": "count",
  "start": 1,
  "end": 3,
  "count": 3,
  "step": 1,
  "valueType": "number",
  "variable": "page",
  "maxIterations": 100
}

结果与连接

每次把当前值写入 ${vars.page};body 也能读取 ${item} 与 ${index}。

body · 循环体done · 循环结束

使用提示

  • step 不能为 0,区间方向必须匹配步长。最大次数 1–1000,超过 maxIterations 会失败。

浏览器 / waitPage

等待并切换页面#

按明确 URL 查找已经打开或随后打开的页面,命名并切换;多个页面匹配时失败。适合先读接口再决定是否接管弹窗。

适用场景

先读取接口再进入弹窗接管已打开的标签

使用方法

  1. 在触发打开页面之后,填写要接管的 URL 和匹配方式。
  2. 指定 pageName;找到唯一页面后命名并切换。

参数与默认值

等待并切换页面参数
参数类型 / 可选值默认值
页面 URLurlPattern必填文本文本
"${input.origin}/list"
URL 匹配match选项
exact · 完全匹配
path · 路径匹配
includes · 包含
"exact"
页面名称pageName必填文本文本
"results"
超时(毫秒)timeoutMs数字
30000

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "urlPattern": "https://example.com/results",
  "match": "path",
  "pageName": "results",
  "timeoutMs": 30000
}

结果与连接

匹配页成为当前页面,可按 results 名称切换。

next · 下一步

使用提示

  • exact 比较完整地址;path 比较 origin+pathname(忽略 query/hash);includes 为文本包含。多个页面匹配会失败。
  • 不能打开一个新 URL;页面必须已经或随后在当前浏览器上下文中打开。

浏览器 / screenshot

保存截图#

生成截图并在运行结果中展示

适用场景

保留页面证据调试页面状态保存长页图片

使用方法

  1. 先等待目标页面内容显示。
  2. 填写截图名称,fullPage=false 保存视口,true 保存完整页面。
  3. 到执行记录的产物中查看 PNG。

参数与默认值

保存截图参数
参数类型 / 可选值默认值
截图名称name必填文本文本
"page"
完整页面fullPage布尔值
false

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "name": "results",
  "fullPage": true
}

结果与连接

保存 PNG 运行产物,不写入命名变量。

next · 下一步

使用提示

  • 名称用于产物展示,不是本机文件路径。每次运行最多 64 张截图,每张上限 10 MB。

高级节点 / imageMatch

图像位置匹配PRO#

通过 Studio Server 进行纯 Rust 模板匹配,返回原图坐标;低分或歧义时不返回有效目标。

需要有效 Pro 及以上订阅,并通过已授权的拓睿思执行。免费用户可阅读说明,不能使用此节点。

适用场景

在图片中定位模板处理自有页面的图像控件

使用方法

  1. 分别指定背景图与模板图来源,可选 selector、region、base64 或 path。
  2. 配置算法、透明遮罩、搜索范围和阈值,运行后保存匹配结果。
  3. 先判断 ${vars.imageMatch.matched},再把结果交给坐标映射。

参数与默认值

图像位置匹配参数
参数类型 / 可选值默认值
背景图来源backgroundJSON
{
  "type": "selector",
  "selector": "#background"
}
模板图来源templateJSON
{
  "type": "selector",
  "selector": "#piece"
}
匹配算法algorithm选项
edge_ccorr_normed · 边缘归一化互相关
gray_ccorr_normed · 灰度归一化互相关
alpha_contour_chamfer · 透明轮廓距离
"edge_ccorr_normed"
模板遮罩maskJSON
{
  "mode": "alpha",
  "threshold": 16
}
搜索范围与阈值searchJSON
{
  "roi": null,
  "scales": [
    1
  ],
  "maxCandidates": 3,
  "minScore": 0.8,
  "minPeakGap": 0.03,
  "maxDistance": 2
}
边缘参数edgeJSON
{
  "method": "canny",
  "lowThreshold": 50,
  "highThreshold": 120
}
超时(毫秒)timeoutMs数字
30000
保存到变量variable必填文本文本
"imageMatch"

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "background": {
    "type": "selector",
    "selector": "#background"
  },
  "template": {
    "type": "selector",
    "selector": "#piece"
  },
  "algorithm": "edge_ccorr_normed",
  "mask": {
    "mode": "alpha",
    "threshold": 16
  },
  "search": {
    "roi": null,
    "scales": [
      1
    ],
    "maxCandidates": 3,
    "minScore": 0.8,
    "minPeakGap": 0.03,
    "maxDistance": 2
  },
  "edge": {
    "method": "canny",
    "lowThreshold": 50,
    "highThreshold": 120
  },
  "timeoutMs": 30000,
  "variable": "imageMatch"
}

结果与连接

保存 matched、best 等匹配信息;坐标属于原始图像像素,不能直接作为视口拖动坐标。

next · 下一步

使用提示

  • 需要有效 Pro 及以上订阅,并通过已授权 Studio 执行。
  • 低分或峰值歧义不返回有效目标;minScore 是相似度阈值,不是业务成功概率。
  • path 是 Studio Server 所在机器的路径;透明模板建议使用原图,截图可能失去透明信息。

高级节点 / mapImagePoint

图像坐标映射PRO#

将原图匹配锚点换算为视口坐标和拖动位移,并绑定页面几何校验信息。

需要有效 Pro 及以上订阅,并通过已授权的拓睿思执行。免费用户可阅读说明,不能使用此节点。

适用场景

原图坐标转为页面坐标把匹配位置映射为拖动位移

使用方法

  1. match 整体引用已成功的图像匹配结果。
  2. 填写背景图元素和移动图块元素,设置原模板锚点 anchor 与位移比例 motionGain。
  3. 将 ${vars.dragTarget.target} 整体传给拖动节点的 target。

参数与默认值

图像坐标映射参数
参数类型 / 可选值默认值
匹配结果matchJSON
"${vars.imageMatch}"
背景图元素imageSelector必填文本文本
"#background"
移动图块元素(空为绝对目标)movingSelector文本
"#piece"
原模板锚点anchorJSON
{
  "x": 0,
  "y": 0
}
指针/图块位移比例motionGainJSON
{
  "x": 1,
  "y": 1
}
超时(毫秒)timeoutMs数字
30000
保存到变量variable必填文本文本
"dragTarget"

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "match": "${vars.imageMatch}",
  "imageSelector": "#background",
  "movingSelector": "#piece",
  "anchor": {
    "x": 0,
    "y": 0
  },
  "motionGain": {
    "x": 1,
    "y": 1
  },
  "timeoutMs": 30000,
  "variable": "dragTarget"
}

结果与连接

保存包含 target 的映射结果,处理透明裁剪、显示比例和滚动,并绑定页面几何校验信息。

next · 下一步

使用提示

  • 需要有效 Pro 及以上订阅,并通过已授权 Studio 执行。
  • movingSelector 留空计算绝对目标;anchor 是原始完整模板中的像素坐标。页面图像刷新后重新匹配并映射。

高级节点 / ocr

区域文字识别PRO#

截取元素或页面 CSS 坐标区域,调用 Moli OCR,返回文字和文本块;首次可能准备模型

需要有效 Pro 及以上订阅,并通过已授权的拓睿思执行。免费用户可阅读说明,不能使用此节点。

适用场景

识别图片中文字提取 Canvas 或扫描件文字

使用方法

  1. 先打开页面;文字能从 DOM 读取时优先使用提取节点。
  2. selector 模式指定元素;region 模式填写页面 CSS 坐标矩形,可从暂停调试画面拾取。
  3. 等待识别结果,通过 ${vars.ocr.text} 读取全文。

参数与默认值

区域文字识别参数
参数类型 / 可选值默认值
识别区域mode选项
selector · 页面元素
region · 矩形区域
"selector"
元素定位器selector文本
"body"
区域(页面 CSS 像素)regionJSON
{
  "x": 0,
  "y": 0,
  "width": 300,
  "height": 150
}
保存到变量variable必填文本文本
"ocr"
截图名称name必填文本文本
"ocr"
OCR 超时(毫秒,含模型准备)timeoutMs数字
180000

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "mode": "selector",
  "selector": "#receipt",
  "region": {
    "x": 0,
    "y": 0,
    "width": 300,
    "height": 150
  },
  "variable": "ocr",
  "name": "receipt",
  "timeoutMs": 180000
}

结果与连接

保存包含 text、blocks 的识别结果,并保存识别区域截图。

next · 下一步

使用提示

  • 需要有效 Pro 及以上订阅,并通过已授权 Studio 执行。
  • 首次可能准备模型,timeoutMs 包含模型准备时间。region 使用页面 CSS 像素,不是设备像素或截图像素。

浏览器 / switchPage

切换页面#

切回 main 或已命名的弹窗

适用场景

弹窗处理后返回主页面在已命名标签间切换

使用方法

  1. 填写 main 或前置节点命名的页面名称。
  2. 切换后,后续定位器和截图都针对该页面。

参数与默认值

切换页面参数
参数类型 / 可选值默认值
页面名称pageName必填文本文本
"main"

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "pageName": "main"
}

结果与连接

改变当前页面,不重新打开页面。

next · 下一步

使用提示

  • 页面必须仍打开且已注册名称;设计期候选名称不保证分支执行后页面一定存在。

数据 / pageScript

网页脚本#

在网页中执行表达式,可通过 arg 访问传入值

适用场景

读取结构化页面数据访问 DOM 属性处理独立滚动容器

使用方法

  1. 填写在当前网页中执行的 JavaScript 表达式,例如 document.title。
  2. 通过 argument 传入 JSON,在表达式中使用 arg。
  3. 返回可序列化值并保存到变量。

参数与默认值

网页脚本参数
参数类型 / 可选值默认值
JavaScript 表达式source必填文本多行文本
"document.title"
arg 参数argumentJSON
null
保存到变量variable必填文本文本
"result"

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "source": "Array.from(document.querySelectorAll(arg.selector), el => ({title: el.textContent, href: el.href}))",
  "argument": {
    "selector": "a.result"
  },
  "variable": "rows"
}

结果与连接

保存表达式返回值。

next · 下一步

使用提示

  • 执行环境是网页,没有 Node.js 文件系统。填写表达式;多语句可写成立即调用函数表达式。
  • source 不插值流程变量,用 argument 和 arg 传值。修改页面的脚本会产生实际页面操作。

数据 / output

输出结果#

将值加入本次运行的结果

适用场景

展示最终业务数据输出每轮循环结果查看调试值

使用方法

  1. value 设为 JSON 值或完整变量引用。
  2. 连接后续节点或结束;运行时在结果面板中查看。

参数与默认值

输出结果参数
参数类型 / 可选值默认值
输出内容valueJSON
"${vars.result}"

配置示例

这是节点的 config 配置。按参数名在配置区填写;JSON 参数需填写合法 JSON。导入完整流程请使用上方示例。

{
  "value": "${vars.result}"
}

结果与连接

将一个值追加到本次运行的输出列表;不会覆盖之前的输出。

next · 下一步

使用提示

  • 输出不等同于下载文件;需要文件请连接“保存文件”。一次运行最多 500 条或约 1 MB 输出。
返回开始之前 ↑