📚 知识库

08调用动作组

作者: aklai 更新时间: 2026-01-13 02:05 浏览次数: 67

动作组功能使用教程

概述

动作组是一个强大的功能模块化系统,允许用户将常用的动作序列组织成可重用的组件。通过动作组,可以实现代码复用、简化脚本结构、提高维护效率,为复杂的自动化场景提供更清晰的组织方式。

支持的功能特性

  • 动作组调用: 在脚本中调用预定义的动作组
  • 嵌套循环: 动作组内支持独立的循环控制
  • 修饰器系统: 提供重试、超时、性能监控等增强功能
  • 作用域管理: 支持私有和全局两种作用域
  • 随机执行: 支持动作组级别的随机执行概率控制

核心概念

动作组 vs 直接编写动作

特性 直接编写动作 动作组模式
代码复用 需要重复编写相同动作序列 一次定义,多次调用
维护性 修改需要在多处更新 集中维护,统一修改
可读性 脚本冗长,难以理解主要流程 脚本清晰,突出业务逻辑
模块化 功能耦合,难以独立测试 模块独立,便于单独测试
配置复杂度 简单 需要额外的组织和管理

动作组的工作原理

  1. 定义阶段: 创建动作组,定义包含的动作序列
  2. 调用阶段: 在脚本中通过 调用动作组 动作类型调用动作组
  3. 执行阶段: 系统按顺序执行动作组内的所有动作
  4. 返回机制: 动作组执行完成后返回调用位置继续执行
  5. 错误处理: 支持动作组级别的错误处理和重试机制

作用域类型

私有动作组

  • 绑定: 只能在特定脚本中使用
  • 管理: 与脚本一起保存和管理
  • 适用: 脚本特定的功能模块

全局动作组

  • 共享: 可在所有脚本中使用
  • 独立: 独立存储和管理
  • 适用: 通用的功能模块

动作组创建和管理

创建动作组

1. 进入动作组管理界面

通过以下路径进入: - 主界面 → 脚本管理 → 动作组管理 - 或在脚本编辑时,通过动作配置界面访问

2. 创建新动作组

点击 “创建动作组” 按钮: - 系统将显示动作组创建向导 - 可选择创建私有或全局动作组

3. 配置基本信息

动作组名称: - 输入有意义的名称,如 “登录流程”、”数据清理” - 名称应该简洁明了,便于识别用途

作用域选择: - 私有动作组: 绑定到当前脚本 - 全局动作组: 可在所有脚本中使用

描述说明: - 添加动作组的功能描述 - 说明使用场景和注意事项

4. 添加动作序列

在动作组编辑界面: - 点击 “添加动作” 选择要添加的动作类型 - 配置每个动作的具体参数 - 支持拖拽调整动作执行顺序 - 可以添加分组标签组织动作

动作组分类管理

分类系统

动作组支持分类管理,便于组织和查找:

默认分类: - 系统功能类 - 界面操作类
- 数据处理类 - 网络请求类 - 文件操作类

自定义分类: - 可以创建自定义分类 - 支持分类颜色标识 - 支持分类展开/折叠

分类操作

创建分类:

分类信息:
├── 分类名称:如 "登录相关"
├── 描述说明:分类用途说明
├── 颜色标识:便于视觉区分
└── 排序顺序:在列表中的显示顺序

分配动作组到分类: - 在动作组编辑界面选择分类 - 支持批量分配操作 - 可以快速筛选和查找

配置示例

示例1: 登录流程动作组

基本信息: - 名称: “用户登录流程” - 作用域: 全局动作组 - 分类: 系统功能类 - 描述: 通用的用户登录处理流程

动作序列:

动作1: 文字识别->点击 - 识别并点击"登录"按钮
  └── 检测目标: ["登录", "Login", "登陆"]
  └── 失败处理: 跳转到错误处理

动作2: WAIT - 等待登录界面加载
  └── 等待时间: 2秒
  └── 等待类型: 固定等待

动作3: 文字识别->检测 - 检测是否登录成功
  └── 检测目标: ["个人中心", "用户名", "退出"]
  └── 成功后操作: 无操作
  └── 失败后操作: 执行动作组 "登录失败处理"

示例2: 数据清理动作组

基本信息: - 名称: “清理缓存数据” - 作用域: 全局动作组 - 分类: 系统功能类

动作序列:

动作1: 打开APP - 打开设置应用
  └── 应用包名: com.android.settings

动作2: 文字识别->点击 - 点击存储选项
  └── 检测目标: ["存储", "Storage"]

动作3: 文字识别->点击 - 点击清理缓存
  └── 检测目标: ["清理缓存", "Clear Cache"]

动作4: 文字识别->点击 - 确认清理
  └── 检测目标: ["确定", "OK", "确认"]

动作组调用

基本调用方式

在脚本中添加 调用动作组 动作:

1. 选择动作组调用类型

在动作配置界面选择: - 动作类型: 调用动作组 - 系统将显示动作组调用配置界面

2. 选择要调用的动作组

动作组选择器: - 显示所有可用的动作组(私有 + 全局) - 按分类组织显示 - 支持搜索和筛选功能 - 显示动作组的基本信息预览

3. 配置调用参数

基本配置:

动作组调用配置:
├── 动作组ID:选择要调用的具体动作组
├── 调用描述:可选的调用说明
└── 执行顺序:在当前脚本中的执行位置

高级配置:

高级选项:
├── 随机执行:是否启用随机执行概率
├── 执行概率:随机执行的概率值(0.0-1.0)
├── 超时设置:动作组执行的最大时间限制
├── 错误处理:执行失败时的处理策略
└── 返回处理:执行完成后的后续操作

随机执行控制

动作组调用支持两个层次的随机执行控制:

1. 调用层随机控制

在脚本中调用动作组时配置:

随机执行配置:
├── 启用随机:是否开启调用层随机执行
├── 执行概率:0.0(永不执行)到 1.0(总是执行)
├── 随机算法:基于上下文的智能随机
└── 日志记录:记录随机决策过程

配置示例:

动作: 调用动作组
动作组: "用户登录流程"
随机执行配置:
  启用随机: true
  执行概率: 0.7  # 70%概率执行
说明: 70%概率执行登录流程

2. 动作组自身随机控制

在动作组定义时配置:

动作组自身随机配置:
├── 启用状态:动作组本身是否支持随机执行
├── 执行概率:动作组自身的执行概率
├── 优先级:与调用层随机的关系
└── 组合逻辑:两层随机如何结合

双重随机逻辑: 1. 首先检查调用层随机设置 2. 如果调用层随机通过,再检查动作组自身随机 3. 只有两层都通过才会实际执行动作组 4. 实际执行概率 = 调用层概率 × 动作组自身概率

调用示例

示例1: 简单调用

动作类型: 调用动作组
动作组: "用户登录流程"
随机执行: 关闭
说明: 无条件执行登录流程

示例2: 概率调用

动作类型: 调用动作组
动作组: "数据清理动作组"
随机执行配置:
  启用随机: true
  执行概率: 0.3  # 30%概率执行
说明: 30%概率执行数据清理

示例3: 条件调用链

# 脚本中的动作序列
动作1: 文字识别->检测 - 检测内存使用情况
  └── 检测目标: ["内存不足", "空间不够"]
  └── 成功后操作: 执行动作组 "内存清理流程"

动作2: 调用动作组 - 调用清理动作组
  └── 动作组: "内存清理流程"
  └── 随机执行: 关闭

高级功能

修饰器系统

动作组支持强大的修饰器系统,提供各种增强功能:

1. 重试修饰器 (RETRY_ON_FAILURE)

功能描述: 当动作组执行失败时自动重试

配置参数:

重试配置:
├── 最大尝试次数:总共尝试执行的次数(默认3次)
├── 重试延迟:每次重试之间的等待时间(毫秒)
├── 退避倍数:重试延迟的递增倍数(默认1.5)
└── 重试条件:触发重试的特定错误类型

配置示例:

修饰器类型: RETRY_ON_FAILURE
启用状态: true
重试配置:
  最大尝试次数: 5
  重试延迟: 2000ms
  退避倍数: 2.0
  重试条件: ["OCR识别失败", "网络超时"]

工作机制: 1. 动作组首次执行失败时触发重试 2. 等待指定延迟时间后重新执行 3. 每次重试的延迟时间按退避倍数递增 4. 达到最大尝试次数后停止重试

2. 性能监控修饰器 (PERFORMANCE_MONITOR)

功能描述: 监控动作组的执行性能指标

配置参数:

性能监控配置:
├── 启用时间统计:记录执行耗时
├── 启用内存跟踪:监控内存使用情况
├── 报告阈值:超过此时间才生成报告(毫秒)
├── 保存到文件:是否将性能数据保存到文件
└── 报告格式:性能报告的输出格式

监控指标: - 执行开始时间 - 执行结束时间 - 总执行耗时 - 内存使用峰值(可选) - 执行成功率

3. 超时控制修饰器 (TIMEOUT_CONTROL)

功能描述: 为动作组设置最大执行时间限制

配置参数:

超时控制配置:
├── 超时时间:最大执行时间(毫秒)
├── 超时处理:超时后的处理策略
├── 警告阈值:接近超时时的警告时间
└── 强制终止:是否强制终止超时的执行

超时处理策略: - 立即终止: 超时后立即停止执行 - 完成当前动作: 允许当前动作完成后停止 - 记录并继续: 记录超时但继续执行

4. 条件执行修饰器 (CONDITIONAL_EXECUTION)

功能描述: 根据预设条件决定是否执行动作组

配置参数:

条件执行配置:
├── 条件列表:需要检查的条件集合
├── 逻辑关系:条件之间的逻辑关系(AND/OR)
├── 跳过策略:条件不满足时是否跳过执行
└── 失败处理:条件检查失败时的处理方式

条件类型: - OCR检测条件 - OpenCV图像识别条件 - 系统状态条件 - 自定义脚本条件

5. 钩子修饰器 (BEFORE_AFTER_HOOKS)

功能描述: 在动作组执行前后插入自定义动作

配置参数:

钩子配置:
├── 前置钩子:执行前运行的动作列表
├── 后置钩子:执行后运行的动作列表
├── 成功钩子:执行成功时运行的动作
├── 失败钩子:执行失败时运行的动作
└── 钩子超时:钩子执行的超时时间

钩子类型说明:

前置钩子 (Before Hooks): - 在动作组主体执行前运行 - 可用于环境准备、状态检查等 - 前置钩子失败会影响主体执行

后置钩子 (After Hooks): - 在动作组主体执行后运行 - 无论成功失败都会执行 - 可用于资源清理、状态恢复等

成功钩子 (Success Hooks): - 仅在动作组成功执行后运行 - 可用于成功后的特殊处理

失败钩子 (Failure Hooks): - 仅在动作组执行失败后运行 - 可用于错误处理、回滚操作等

6. 元素存在检查修饰器 (ELEMENT_EXISTENCE_CHECK)

功能描述: 在执行前检查特定界面元素是否存在

配置参数:

元素存在检查配置:
├── 检测类型:OCR文字检测或OpenCV图像检测
├── 检测目标:要检测的文字或图像
├── 存在时行为:元素存在时的处理策略
├── 不存在时行为:元素不存在时的处理策略
└── 检测超时:元素检测的最大等待时间

修饰器组合使用

多个修饰器可以同时使用,形成功能强大的执行控制链:

组合示例1: 完整的错误处理链

动作组: "关键业务流程"
修饰器配置:
  1. 条件执行修饰器:
     - 检查系统状态是否正常
     - 检查网络连接是否可用
  
  2. 元素存在检查修饰器:
     - 检查目标界面是否已加载
     - 元素不存在时等待3秒后重试
  
  3. 性能监控修饰器:
     - 监控执行时间
     - 记录性能指标
  
  4. 重试修饰器:
     - 最大重试3次
     - 递增延迟策略
  
  5. 超时控制修饰器:
     - 最大执行时间30秒
     - 超时后强制终止
  
  6. 钩子修饰器:
     - 前置钩子: 备份当前状态
     - 成功钩子: 记录成功日志
     - 失败钩子: 恢复备份状态

执行流程

修饰器按以下顺序执行: 1. 条件检查 → 验证执行条件 2. 安全检查 → 验证安全策略 3. 元素存在检查 → 检查界面状态 4. 前置钩子 → 执行准备工作 5. 重试循环开始 6. 性能监控开始 7. 超时控制开始 8. 主体动作组执行 9. 超时控制结束 10. 性能监控结束 11. 重试循环结束 12. 成功/失败钩子 → 根据结果执行 13. 后置钩子 → 执行清理工作

嵌套循环支持

动作组内部支持独立的循环控制,与脚本主循环隔离:

动作组循环特性

独立循环栈: - 每个动作组维护独立的循环状态 - 支持多层嵌套循环 - 循环状态不影响主脚本执行

循环状态管理:

循环状态信息:
├── 循环开始索引:循环开始动作的位置
├── 循环结束索引:循环结束动作的位置
├── 总迭代次数:循环设置的总次数
├── 当前迭代次数:已完成的迭代次数
├── 嵌套级别:当前循环的嵌套深度
└── 循环标识:唯一的循环ID

循环配置示例

动作组: "数据批量处理"
动作序列:
  动作1: 循环开始
    └── 循环次数: 10
    └── 循环说明: "处理10条数据记录"
  
  动作2: 文字识别->点击 - 选择下一条记录
    └── 检测目标: ["下一条", "Next"]
  
  动作3: WAIT - 等待数据加载
    └── 等待时间: 1秒
  
  动作4: 调用动作组 - 调用处理子流程
    └── 动作组: "单条数据处理流程"
  
  动作5: 循环结束
    └── 对应循环: 动作1的循环开始

分组条件控制

动作组内部也支持分组条件控制功能:

配置方式

在动作组编辑界面: - 为动作添加分组标签 - 配置分组条件控制规则 - 设置重试和跳转策略

条件控制示例

动作组: "复杂界面处理"
分组条件控制配置:
  分组1 - "界面检测":
    重试次数: 3
    重试条件: "OCR检测失败"
    失败后操作: "跳转到错误处理"
  
  分组2 - "数据输入":
    重试次数: 2
    重试条件: "输入验证失败"
    失败后操作: "返回上一步"

导入导出功能

动作组包 (.goag)

动作组支持完整的导入导出功能,使用 .goag 格式的动作组包:

动作组包内容

动作组包结构:
├── 动作组定义:完整的动作组配置信息
├── 依赖的文本文件:动作组引用的外部文本文件
├── 修饰器配置:所有修饰器设置
├── 分组条件配置:分组条件控制设置
├── 版本信息:创建时间、版本号等元数据
└── 校验信息:确保包的完整性

导出功能

导出选项:

导出配置:
├── 包含文本文件:是否包含引用的文本文件
├── 包含修饰器配置:是否包含所有修饰器设置
├── 包含分组配置:是否包含分组条件控制
├── 压缩选项:是否压缩导出文件
└── 导出位置:选择导出到Downloads或分享

导出方式: 1. 导出到Downloads: 保存到设备的Downloads目录 2. 分享功能: 通过系统分享机制发送给其他应用 3. 生成链接: 创建可分享的链接(如果支持)

导入功能

导入来源: - 从文件系统选择 .goag 文件 - 通过分享接收动作组包 - 从云存储导入 - 从其他设备传输

导入处理:

导入过程:
├── 文件验证:检查文件格式和完整性
├── 冲突检测:检查是否存在同名动作组
├── 冲突解决:提供重命名或覆盖选项
├── 依赖处理:导入包含的文本文件
├── 配置合并:合并修饰器和分组配置
└── 验证测试:可选的导入后验证

冲突解决策略: - 自动重命名: 为导入的动作组添加后缀 - 用户选择: 让用户决定是覆盖还是重命名 - 跳过导入: 跳过已存在的同名动作组 - 强制覆盖: 直接覆盖现有动作组

批量操作

批量导出

选择多个动作组进行批量导出:

批量导出选项:
├── 选择动作组:支持多选操作
├── 打包方式:单独文件或合并包
├── 命名规则:自动生成文件名规则
├── 导出位置:统一的导出目录
└── 进度显示:显示导出进度和状态

批量导入

一次性导入多个动作组包:

批量导入特性:
├── 多文件选择:支持选择多个.goag文件
├── 冲突统一处理:为所有冲突应用相同策略
├── 进度跟踪:显示整体导入进度
├── 错误报告:汇总导入过程中的错误
└── 成功统计:显示成功导入的动作组数量

最佳实践

1. 动作组设计原则

单一职责原则: - 每个动作组应该专注于一个特定功能 - 避免在一个动作组中混合多种不相关的操作 - 保持动作组的功能边界清晰

可重用性原则: - 设计通用的、参数化的动作组 - 避免硬编码特定的坐标或文字 - 考虑不同设备和分辨率的兼容性

模块化原则: - 将复杂流程分解为多个小的动作组 - 通过动作组组合实现复杂功能 - 保持每个动作组的相对独立性

2. 命名规范

动作组命名: - 使用描述性的名称,如 “用户登录流程”、”数据清理操作” - 避免使用过于简短或模糊的名称 - 可以使用分类前缀,如 “系统_重启流程”

分组命名: - 在动作组内使用清晰的分组名称 - 反映动作的逻辑关系,如 “初始化”、”主要操作”、”清理”

版本管理: - 为重要的动作组添加版本号 - 记录变更历史和兼容性信息

3. 错误处理策略

层次化错误处理:

错误处理层次:
├── 动作级错误:单个动作的重试和容错
├── 分组级错误:分组条件控制的重试机制
├── 动作组级错误:修饰器提供的重试和恢复
└── 脚本级错误:整体的错误处理和恢复策略

容错设计: - 使用多种检测方式提高识别成功率 - 设置合理的等待时间避免时序问题 - 提供备用的执行路径

4. 性能优化

执行效率: - 合理设置重试次数,避免过度重试 - 使用ROI区域限制检测范围 - 优化动作序列,减少不必要的等待

资源管理: - 及时清理临时数据和缓存 - 避免在动作组中进行大量的文件I/O操作 - 合理使用内存,避免内存泄漏

5. 测试和调试

单元测试: - 单独测试每个动作组的功能 - 验证各种输入条件下的行为 - 确保错误处理机制正常工作

集成测试: - 测试动作组在不同脚本中的调用 - 验证嵌套调用的正确性 - 测试并发调用的安全性

调试技巧: - 启用详细的日志记录 - 使用性能监控修饰器分析瓶颈 - 逐步测试,从简单到复杂

故障排除

常见问题

1. 动作组调用失败 - 检查作用域: 确认动作组的作用域设置正确 - 验证存在性: 确认动作组确实存在且未被删除 - 检查权限: 验证是否有足够的权限访问动作组

2. 修饰器不生效 - 启用状态: 检查修饰器是否已启用 - 配置参数: 验证修饰器的配置参数是否正确 - 执行顺序: 确认修饰器的执行顺序符合预期

3. 循环异常终止 - 循环配对: 确认循环开始和循环结束正确配对 - 嵌套关系: 检查嵌套循环的层次关系 - 状态清理: 确保循环状态在异常时被正确清理

4. 随机执行不符合预期 - 概率设置: 检查随机执行概率的设置值 - 双重随机: 理解调用层和动作组层的双重随机机制 - 上下文影响: 考虑随机种子和上下文的影响

5. 导入导出问题 - 文件格式: 确认文件是有效的.goag格式 - 版本兼容: 检查文件版本与当前系统的兼容性 - 权限问题: 验证文件读写权限 - 磁盘空间: 确保有足够的存储空间

调试工具

日志分析: - 启用动作组专用日志 - 分析执行时序和性能数据 - 查看修饰器的执行日志

性能监控: - 使用性能监控修饰器 - 分析执行瓶颈和资源消耗 - 优化关键路径的性能

状态检查: - 检查动作组的执行状态 - 监控循环和条件控制状态 - 验证修饰器的状态变化

总结

动作组功能为脚本自动化提供了强大的模块化解决方案。通过合理的设计和使用,可以大大提高脚本的可维护性、可重用性和稳定性。

关键要点: - 理解动作组的作用域和生命周期 - 合理使用修饰器系统增强功能 - 设计可重用的、高质量的动作组 - 建立完善的错误处理和容错机制 - 遵循最佳实践进行开发和维护

正确使用动作组功能可以让您的自动化脚本更加模块化、稳定和高效!