外观
07 循环、子节点流程与条件
节点可以循环执行自身的完整流程,也可以循环扫描成功或失败的直接子节点列表。画布连线是子节点的默认配置方式;循环与分支中的显式字段用于选择循环范围、执行方式、执行顺序或覆盖连线。
循环参数

图中 循环与分支展示超时时间、间隔和次数;当前界面还可通过右上角的 + 添加 循环范围。上方节点属性使用通用配置中的规则。
| 参数 | 格式 | 未添加 / 添加初始值 / 留空 | 必填与显示 | 运行影响与示例 |
|---|---|---|---|---|
| 循环范围 | 当前节点 / 子节点 | 当前节点 / 当前节点 / 不适用 | 可选;添加后显示 | 当前节点循环本节点的完整流程;子节点循环成功后执行或失败后执行的直接列表 |
| 循环超时时间 | -1或非负整数,毫秒 | 不启用 / 10000 / 0 | 可选;添加后显示 | 添加即启用循环并限制墙钟总时长;-1不限制时间,0只执行一轮 |
| 循环间隔 | 非负整数,毫秒 | 循环启用后1000 / 1000 / 0 | 可选;添加后显示 | 本身不启用循环;两轮之间等待,末轮后不等待 |
| 循环次数 | -1或大于0的整数 | 不启用 / 10 / 校验失败 | 可选;添加后显示 | 添加即启用循环并限制完整轮数;-1不限制轮数,例如3 |
循环超时时间和循环次数都未添加时只执行一轮;只添加循环范围或循环间隔也不会开启循环。添加超时时间或循环次数中的任意一项才会重复,并且只受已添加的上限限制;两项都添加时任一先到就停止。显式填写-1仍表示开启循环,只是不限制对应的时间或轮数。循环已开启但未添加循环间隔时,两轮之间默认等待1000毫秒。
未添加循环范围时使用新的默认值 当前节点。在这个范围中,一轮包含识别前条件、识别、动作、动作重复、执行后,以及这些阶段的静止等待和延迟。任一阶段失败都会重新执行完整一轮;一轮成功后立即离开循环并执行一次成功子节点。次数或超时耗尽后,只执行一次失败子节点。重新执行动作可能重复已经发生的鼠标、键盘或数据写入,执行端不会回滚上一轮的外部影响。
选择 子节点时,当前节点自身只执行一次;循环参数应用于它的成功后执行和失败后执行直接列表,不会把相同的次数递归套到所有后代。直接子节点被调用后的完整执行耗时会计入当前窗口。成功列表耗尽后进入失败列表时,失败列表使用独立的新次数和超时窗口。普通节点作为候选被寻找时使用父节点的子节点循环配置;入口节点使用自身配置。
两种范围都按墙钟计时,范围内的执行时间和轮间等待都计入超时。每次开始新一轮前都会重新检查次数和截止时间;等待只持续到剩余截止时间,因此等待中到期不会额外开始一轮。已经开始的一轮不会被硬中断:即使执行中越过截止时间,本轮成功仍按成功处理,本轮失败则不再开始下一轮。
执行方式和执行顺序
这两个参数同时用于“成功后执行”和“失败后执行”的直接子节点列表。未添加时由执行端使用缺省值,不会把缺省配置写回项目。循环范围为 当前节点时,子节点列表在本节点循环结束后只处理一次;范围为 子节点时,列表按循环限制重复处理。
| 参数 | 可选值 | 未添加 / 添加初始值 | 必填与显示 | 运行影响 |
|---|---|---|---|---|
| 执行方式 | 依次执行 / 候选执行 | 依次执行 / 依次执行 | 可选;添加后显示 | 依次执行运行本轮全部直接子节点,不汇总子节点结果;候选执行在直接候选自身成功时停止,自身失败则继续下一项 |
| 执行顺序 | 按序号 / 随机 | 按序号 / 按序号 | 可选;添加后显示 | 按序号严格保留列表或画布连线顺序;随机由执行端在每个完整轮次重新排列列表副本,不改变项目中的原数组 |
候选执行只看直接候选自身的结果。例如P以候选执行查找A、B:A自身成功后不会执行B,即使A后面的孙节点失败也一样;A自身失败时会继续B,即使A的失败分支只完成了清理节点也一样。若失败分支重新进入A,则以A最新一次完整执行结果判断是否继续B。随机只改变每轮的扫描先后,不会保存随机结果,也不提供随机种子设置。
每轮先跳过禁用、识别前条件不满足或运行时位置引用无法解析的候选,再按执行顺序处理剩余列表。随机模式重排的是这个过滤后的列表副本;如果候选执行没有剩余候选,或所有直接候选自身都失败,则进入当前节点的“失败后执行”。入口节点同样按候选方式查找可执行入口。
依次执行不会用直接子节点的结果反向修改当前节点。当前节点自身成功时,即使本轮所有子节点都失败,也不会因此触发当前节点的“失败后执行”;当前节点自身失败时,仍会执行“失败后执行”中的节点。
成功和失败子节点
| 参数 | 格式 | 默认/空值 | 必填与显示 | 运行影响与示例 |
|---|---|---|---|---|
| 成功后执行 | 节点名、节点引用或数组 | 使用画布成功连线;无连线则结束路径 | 可选;添加后显示 | 显式非空值覆盖成功连线,例如点击确认按钮 |
| 失败后执行 | 节点名、节点引用或数组 | 使用画布失败连线;无连线不跳转 | 可选;添加后显示 | 当前节点自身执行失败时扫描;候选执行的“成功后执行”中,所有直接候选自身失败时也作为回退扫描 |
画布右侧 成功输出导出为成功子节点,失败输出导出为失败子节点。显式字段只在值非空时覆盖对应连线,并产生连线被忽略的警告。删除或清空显式字段后,画布连线重新生效。
循环范围为 子节点时,成功子节点因循环次数或超时仍未命中会转入失败子节点,失败子节点使用独立的新轮次计数和超时窗口。连接到目标的 回跳输入只对成功子节点保留回跳语义,失败子节点始终按普通进入处理。
每个节点只向父级返回自己的识别、动作、等待和执行后阶段结果。节点自身失败时会执行“失败后执行”中的节点;清理节点自身成功不会恢复原失败,但分支通过 进入或 回跳重新执行原节点时,以原节点最新一次完整执行结果和失败原因为准。节点自身成功后,普通孙节点失败仍不能把它改成失败。首次未命中等过程日志继续保留;只有最新执行仍失败时,整次运行才以红色失败终止。用户停止和 停止任务始终优先穿过层级并终止整个任务。
需要把识别位置留给子节点时,使用锚点写入与引用,不要把位置名称当作成功子节点。
识别前条件
在 识别前区域右上角选择 + 添加条件。每条条件包含数据引用、运算符和值。
从空白项目创建分类、理解文本内容并组成分类.数据名,见数据参考:使用条件读取数据。本节继续作为节点字段和运行规则的权威说明。
| 参数 | 格式 | 默认/特殊值 | 必填与显示 | 运行影响与示例 |
|---|---|---|---|---|
| 数据引用 | 分类.数据名 | 新条件初始为空 | 每条条件必填 | 读取运行数据,例如界面.自动登录 |
| 运算符 | 下拉选择 | 新条件初始为=;当前可见项为>、<、>=、<=、=、!= | 每条条件必填 | 数值运算符要求比较值是有效数字 |
| 比较值 | 普通文本 | 新条件初始为空 | 当前可见运算符均需填写 | 例如10、true、成功 |
| 满足 | 全部满足/任一满足 | 全部满足 | 仅两条及以上条件显示 | 决定条件组合方式 |
配置定义中预留了 值包含...、值为空、识别成功、识别失败和上游返回为真。但桌面版 3.0.8 的当前 识别前面板没有显示这些预设,也没有在运算符下拉框中提供“包含/为空”,因此不能从当前可见界面新建这些条件。不要手工修改项目文件来绕过界面;需要判断识别结果时,优先使用节点的成功/失败连线。
条件在图像识别之前判断。不满足时不会执行本节点的识别和动作。
常见错误
- 数据引用只填数据名:必须使用
分类.数据名,两侧都不能为空。 - 同时配置显式子节点和画布连线,却期待两者合并:非空显式值会覆盖对应连线。
- 期望随机顺序永久改变列表:随机只作用于当前运行的每个完整轮次,不会回写项目。
- 希望
A成功后跳过同层的B却未添加执行方式:当前缺省值是 依次执行,需要显式选择 候选执行。 - 循环次数填
0:只允许-1或大于0的整数;通常删除循环次数和循环超时时间即可只执行一轮,也可把循环超时时间明确设为0。 - 想重复扫描下游节点却保留默认范围:未添加循环范围时会重复当前节点,应添加 循环范围并选择 子节点。
- 把孙节点失败当成父节点失败:普通结果只返回一层,孙节点不会改写父节点自身结果。