Skip to main content

Logic 逻辑模块

逻辑模块提供流程控制能力,包括条件判断、循环、跳转等。

条件判断 (If/Else/EndIf)

根据条件执行不同的操作路径。

模块结构

条件判断由三个模块组成:

  1. 如果 - 设置条件
  2. 否则 - 条件不满足时的执行分支(可选)
  3. 结束如果 - 标记条件块的结束

条件运算符

通用运算符:

运算符说明
存在变量是否存在
不存在变量是否不存在

文本专用:

运算符说明
为空文本是否为空
不为空文本是否非空
等于文本相等
不等于文本不相等
包含是否包含子串
不包含是否不包含子串
开头是是否以指定文本开头
结尾是是否以指定文本结尾
匹配正则是否匹配正则表达式

数字专用:

运算符说明
大于数字大于
大于等于数字大于等于
小于数字小于
小于等于数字小于等于
介于数字在范围内

布尔专用:

运算符说明
为真布尔值为 true
为假布尔值为 false

输入参数

参数类型说明
输入任意/魔法变量要判断的值
条件枚举条件运算符
比较值 1任意/魔法变量比较值(部分运算符需要)
比较值 2数字/魔法变量范围上限("介于"运算符需要)

输出参数

参数类型说明
result布尔值条件判断结果

使用示例

# 简单条件
1. 如果 ${click.success} 为真
2. 延时 1000ms
3. 否则
4. 提示 "点击失败"
5. 结束如果
# 文本判断
1. 如果 ${ocr_result.text} 包含 "验证码"
2. 设置剪贴板 ${extract_code.text}
3. 延时 2000ms
4. 否则
5. 提示 "未找到验证码"
6. 结束如果
# 数字范围
1. 如果 ${random_number} 介于 1 到 10
2. 提示 "数字在 1-10 范围内"
3. 结束如果

循环 (Loop/EndLoop)

重复执行一组操作固定的次数。

输入参数

参数类型说明
重复次数数字/魔法变量循环执行的次数

输出参数

参数类型说明
loop_index数字当前循环索引(从 1 开始)
loop_total数字循环总次数

使用示例

# 重复点击直到成功(最大5次)
1. 循环 5
2. UI选择器 @Button[text='加载更多']
3. 点击 ${selector.element}
4. 延时 1000ms
5. 如果 ${click.success} 为真
6. 跳出循环
7. 结束如果
8. 结束循环
# 使用循环索引生成序号
1. 循环 10
2. 设置剪贴板 "第 ${loop_index} 次"
3. 延时 500ms
4. 结束循环

跳出循环 (BreakLoop)

提前结束当前循环。

使用示例

1. 循环 100
2. UI选择器 @TextView[text='完成']
3. 如果 ${selector.found} 为真
4. 跳出循环 # 找到后提前结束
5. 结束如果
6. 延时 500ms
7. 结束循环

继续循环 (ContinueLoop)

跳过后续操作,直接进入下一次循环。

使用示例

1. 循环 10
2. 获取剪贴板 ${clipboard}
3. 如果 ${clipboard} 为空
4. 继续循环 # 跳过本次循环的剩余操作
5. 结束如果
6. 处理剪贴板内容
7. 结束循环

跳转 (Jump)

跳转到工作流的指定位置继续执行。

输入参数

参数类型说明
目标步骤步骤选择器要跳转到的目标位置

注意: 此模块会改变工作流的执行顺序,需谨慎使用。

停止工作流 (StopWorkflow)

立即停止当前工作流的执行。

输入参数

参数类型说明
停止原因文本(可选)停止的原因描述

停止并返回 (StopAndReturn)

停止当前工作流,并返回到调用它的父工作流。

使用场景: 在被调用的子工作流中使用,完成特定任务后返回主工作流。

调用其他工作流 (CallWorkflow)

在当前工作流中调用另一个工作流。

输入参数

参数类型说明
工作流工作流选择器要调用的目标工作流
参数字典(可选)传递给目标工作流的参数

输出参数

参数类型说明
result任意被调用工作流的返回值

使用示例

# 主工作流
1. 延时 1000ms
2. 调用其他工作流 "登录流程"
3. 如果 ${call_workflow.result} 为真
4. 提示 "登录成功"
5. 结束如果
# 被调用的"登录流程"工作流
1. UI选择器 @EditText[index=0]
2. 文本输入 'username'
3. UI选择器 @EditText[index=1]
4. 文本输入 'password'
5. UI选择器 @Button[text='登录']
6. 点击
7. 停止并返回 ${click.success}

嵌套示例

双重循环 + 条件判断

1. 循环 3                    # 外层循环 3 次
2. 延时 2000ms
3. 循环 5 # 内层循环 5 次
4. UI选择器 @Button[text='刷新']
5. 点击 ${element}
6. 延时 1000ms
7. 如果 ${click.success} 为真
8. 提示 "刷新成功"
9. 否则
10. 提示 "刷新失败"
11. 结束如果
12. 结束循环
13. 如果 ${loop_index} >= 3
14. 跳出循环
15. 结束如果
16. 结束循环