12元素存在检查
元素存在检查功能使用教程
概述
元素存在检查功能是脚本系统的智能修饰器功能,允许在执行任何动作之前先检查指定的元素是否存在。通过智能的元素检测,实现条件性的动作执行、错误预防和流程优化,为自动化脚本提供强大的前置验证能力。
支持的检测方式
- 文字识别检查: 基于文字识别技术检测指定文字是否存在
- 图片识别检查: 基于图像识别技术检测指定图像模板是否存在
- 混合检测检查: 同时使用文字识别和图像识别进行检测,效率更高
功能特性
- 前置检查: 在动作执行前自动进行元素存在性验证
- 智能跳过: 根据检测结果决定是否执行当前动作
- 多重处理: 支持元素存在和不存在时的不同处理策略
- 高效检测: 混合检测模式一次截图完成多种检测
- 重试机制: 支持检测失败时的自动重试
核心概念
修饰器模式 vs 普通检测
| 特性 | 普通检测动作 | 元素存在检查 |
|---|---|---|
| 执行时机 | 作为独立动作执行 | 作为动作的前置修饰器 |
| 检测目的 | 收集信息、记录状态 | 决定是否执行主动作 |
| 执行影响 | 不影响后续动作执行 | 可控制主动作是否执行 |
| 适用场景 | 状态监控、数据收集 | 条件执行、错误预防 |
工作原理
- 前置检测: 在主动作执行前自动触发检测
- 元素验证: 使用文字识别/图像识别/混合模式检测目标元素
- 结果判断: 评估元素是否存在于当前屏幕
- 执行决策: 根据检测结果和配置决定后续行为
- 动作执行: 执行主动作或跳过/跳转到其他操作
检测方式详解
文字识别检查 (文字识别)
功能描述: 使用文字识别技术检测屏幕上是否存在指定的文字内容
检测机制:
截取屏幕 → 文字识别文字识别 → 搜索目标文字 → 返回检测结果
关键参数: - 检测文字: 要查找的目标文字内容 - 模糊匹配: 是否允许部分匹配 - ROI区域: 限制检测范围提高精度 - 多文字支持: 可设置多个目标文字,找到任意一个即为成功
典型应用场景: - 检测按钮文字是否出现 - 验证页面标题或状态文字 - 确认提示信息的存在
图片识别检查 (图像识别)
功能描述: 使用图像识别模板匹配技术检测屏幕上是否存在指定的图像
检测机制:
截取屏幕 → 加载模板图片 → 模板匹配 → 阈值判断 → 返回检测结果
关键参数: - 模板图片: 要匹配的目标图像文件 - 匹配阈值: 匹配的相似度要求(0.0-1.0) - ROI区域: 限制检测范围提高性能 - 多模板支持: 可设置多个模板图片,匹配任意一个即为成功
典型应用场景: - 检测特定图标或按钮 - 验证界面元素的出现 - 识别复杂的UI组件
混合检测检查 🔄
功能描述: 同时使用文字识别和图像识别进行检测,一次截图完成多种检测,效率更高
检测机制:
截取屏幕 → 并行执行文字识别和图像识别检测 → 根据逻辑规则合并结果 → 返回最终结果
逻辑类型: - **或逻辑 **: 文字识别或图像识别任一检测成功即为成功 - **与逻辑 **: 文字识别和图像识别都检测成功才为成功
模块控制: - 启用文字识别: 可独立控制是否启用文字识别 - 启用图像识别: 可独立控制是否启用图片识别
优势特点: - 高效性: 一次截图同时完成多种检测 - 灵活性: 可根据需要启用不同的检测模块 - 智能性: 支持 或/与 逻辑组合检测结果
典型应用场景: - 同时检测文字和图标的组合元素 - 提高检测成功率的双重验证 - 复杂界面的多重确认
配置步骤
1. 启用元素存在检查
在动作配置界面中: - 找到 “🔍 元素存在检查” 区域 - 点击 “设置” 按钮进入配置界面 - 开启 “启用元素存在检查” 开关
2. 选择检测方式
选择适合的检测类型:
文字识别: 适合按钮文字、状态提示、页面标题 图片识别: 适合图标、复杂UI元素、特定界面 🔄 混合检测 (高效): 适合需要多重验证的复杂场景
3. 配置检测参数
文字识别配置
单文字检测: - 输入要检测的目标文字 - 设置是否启用模糊匹配
多文字检测: - 添加多个目标文字 - 检测到任意一个即为成功
图片识别配置
单模板检测: - 上传或选择模板图片文件 - 设置匹配阈值(建议0.8-0.9) - 配置ROI识别区域(可选)
多模板检测: - 添加多个模板图片 - 匹配任意一个即为成功 - 每个模板可单独设置参数
混合检测配置
检测逻辑选择: - 或逻辑 (任一成功): 适合提高检测成功率 - 与逻辑 (全部成功): 适合严格的验证要求
模块开关控制: - 文字识别开关: 启用/禁用文字识别检测 - 图片识别开关: 启用/禁用图像识别检测
分别配置检测内容: - 文字识别配置: 设置文字识别检测的目标文字 - 图片识别配置: 设置图像识别检测的模板图片
4. 配置执行行为
基础行为设置
元素不存在时: - 跳过执行: 不执行当前动作,直接继续下一个动作 - 继续执行: 忽略检测结果,正常执行当前动作
元素存在时: - 跳过执行: 检测到元素时不执行当前动作 - 继续执行: 检测到元素时正常执行当前动作
高级行为设置
元素存在时的操作: - 调用动作组: 执行指定的动作组 - 跳转到动作: 跳转到指定序号的动作 - 跳转到标签: 跳转到指定名称的标签
元素不存在时的操作: - 调用动作组: 执行指定的动作组 - 跳转到动作: 跳转到指定序号的动作 - 跳转到标签: 跳转到指定名称的标签
5. 配置重试机制
重试设置: - 启用重试: 检测失败时是否自动重试 - 重试次数: 最大重试次数(建议1-5次) - 重试间隔: 每次重试之间的等待时间
超时设置: - 最大等待时间: 检测的最长等待时间 - 检查间隔: 每次检测之间的间隔时间
配置示例
示例1: 按钮存在性检查 (文字识别)
场景: 在点击”确定”按钮前,先检查按钮是否真的存在
配置: - 检测方式: 文字识别 - 检测内容: “确定”, “确认”, “OK” - 模糊匹配: 启用 - 不存在时行为: 跳过执行 - 存在时行为: 继续执行
执行逻辑:
检测"确定"按钮文字 → 找到按钮 → 执行点击动作
→ 未找到 → 跳过点击,继续下一动作
示例2: 页面加载完成检查 (图片识别)
场景: 在操作页面前,确认特定图标已加载完成
配置: - 检测方式: 图片识别 - 模板图片: loading完成图标 - 匹配阈值: 0.85 - 不存在时行为: 跳转到等待流程 - 存在时行为: 继续执行
执行逻辑:
检测加载完成图标 → 找到图标 → 继续执行页面操作
→ 未找到 → 跳转到等待流程
示例3: 登录状态验证 (混合检测)
场景: 综合检测用户头像和”个人中心”文字来确认登录状态
配置: - 检测方式: 🔄 混合检测 (高效) - 检测逻辑: 或逻辑 (任一成功) - 文字识别检测: “个人中心”, “我的账户” - 图像识别检测: 用户头像图标模板 - 存在时行为: 继续执行 - 不存在时行为: 跳转到登录流程
执行逻辑:
同时检测文字和图标 → 找到任意一个 → 确认已登录,继续执行
→ 都未找到 → 确认未登录,跳转到登录流程
示例4: 弹窗处理检查 (多模板检测)
场景: 检测可能出现的多种弹窗类型并进行处理
配置: - 检测方式: 图片识别 - 模板图片: - 广告弹窗关闭按钮 - 系统弹窗确定按钮 - 网络错误弹窗重试按钮 - 存在时行为: 调用弹窗处理动作组 - 不存在时行为: 继续执行
执行逻辑:
检测多种弹窗类型 → 发现任意弹窗 → 调用弹窗处理动作组
→ 无弹窗 → 继续正常执行
执行机制详解
检测时机和顺序
执行时机
- 在主动作执行之前自动触发
- 作为动作的前置修饰器运行
- 不影响动作本身的配置和逻辑
执行顺序
1. 动作开始执行
2. 检查是否配置了元素存在检查
3. 执行元素存在检查
4. 根据检测结果决定后续行为
5. 执行主动作或跳过/跳转
检测算法和优化
截图复用优化
- 在检测开始时进行一次屏幕截图
- 混合检测模式复用同一张截图
- 多模板/多文字检测共享截图资源
- 显著提高检测效率和系统性能
并行检测机制(混合检测)
├── 文字识别检测线程
│ ├── 文字识别处理
│ └── 目标文字匹配
└── 图像识别检测线程
├── 模板匹配处理
└── 阈值判断
等待两个线程完成 → 根据逻辑合并结果
重试和超时处理
重试机制
初次检测 → 检测失败 → 等待重试间隔 → 重新检测
→ 达到重试次数上限 → 按失败处理
→ 检测成功 → 立即返回成功结果
超时保护
- 单次检测的最大执行时间限制
- 防止检测过程卡死或无限等待
- 超时后按检测失败处理
错误恢复
- 检测过程中的异常自动捕获
- 异常情况按检测失败处理
- 不会中断整个脚本的执行
结果处理和行为执行
结果评估
- 成功: 找到至少一个目标元素
- 失败: 未找到任何目标元素
- 异常: 检测过程发生错误
行为映射
检测成功 + 存在时跳过执行 → 跳过主动作
检测成功 + 存在时继续执行 → 执行主动作
检测失败 + 不存在时跳过执行 → 跳过主动作
检测失败 + 不存在时继续执行 → 执行主动作
高级行为执行
- 动作组调用: 异步执行,不阻塞主流程
- 动作跳转: 立即改变执行位置
- 标签跳转: 查找标签位置并跳转
最佳实践
1. 检测方式选择原则
使用文字识别当: - 目标是按钮文字、状态文字、标题等 - 文字内容相对稳定和唯一 - 不需要精确的位置匹配
使用图片识别当: - 目标是图标、特殊UI元素、复杂界面 - 文字识别不够准确或可靠 - 需要精确的位置和外观匹配
使用混合检测当: - 需要提高检测成功率 - 目标元素包含文字和图像的组合 - 需要多重验证确保准确性
2. 检测参数优化
文字识别优化: - 选择独特且稳定的文字内容 - 避免过于通用的词汇(如”确定”、”取消”) - 合理使用模糊匹配平衡准确性和容错性 - 设置ROI区域避免误识别
图片识别优化: - 使用高质量、清晰的模板图片 - 模板图片尺寸不宜过大或过小 - 根据实际情况调整匹配阈值 - 考虑不同分辨率和DPI的适配
混合检测优化: - 根据实际需求选择OR或AND逻辑 - 合理配置两种检测方式的参数 - 避免过于复杂的检测条件 - 优先使用OR逻辑提高成功率
3. 行为配置策略
跳过执行策略: - 用于可选的或条件性的操作 - 避免在关键操作上使用跳过 - 为跳过的动作提供替代方案
跳转操作策略: - 设计清晰的跳转逻辑和路径 - 避免复杂的跳转嵌套 - 提供跳转的错误恢复机制
动作组调用策略: - 保持动作组的独立性和完整性 - 使用有意义的动作组命名 - 考虑动作组执行的时间成本
4. 性能优化建议
检测频率控制: - 避免过于频繁的检测操作 - 合理设置重试间隔和次数 - 在性能敏感的场景减少检测复杂度
并发控制: - 避免同时进行大量的元素检查 - 在循环中使用检查时要特别注意性能 - 监控检测操作的执行时间
5. 调试和维护
调试技巧: - 使用截图功能验证当前屏幕内容 - 分别测试文字识别和图像识别检测 - 逐步调整检测参数找到最佳配置 - 观察执行日志分析问题原因
维护策略: - 定期检查和更新模板图片 - 根据应用界面变化调整检测参数 - 记录常见问题和解决方案 - 建立检测配置的版本管理
故障排除
常见问题
1. 检测总是失败 - 检查目标存在性: 确认文字或图片在屏幕上确实存在 - 验证检测参数: 检查文字内容、模板图片、阈值设置
2. 检测成功率低 - 启用模糊匹配: 对于文字识别检测启用模糊匹配 - 降低匹配阈值: 对于图像识别检测适当降低阈值 - 使用混合检测: 结合文字识别和图像识别提高成功率 - 添加多个目标: 增加多个相似的检测目标
3. 检测速度慢 - 减少重试次数: 降低重试次数和重试间隔 - 优化模板大小: 使用适中大小的模板图片 - 避免复杂检测: 简化检测条件和参数
4. 混合检测逻辑错误 - 确认逻辑类型: 检查是否选择了正确的 或/与 逻辑 - 验证模块启用: 确认文字识别和图像识别模块都正确启用 - 分别测试: 单独测试文字识别和图像识别检测是否正常 - 检查配置完整性: 确保两种检测方式都正确配置
5. 跳转行为异常 - 确认目标存在: 检查跳转的动作组或标签是否存在 - 验证跳转配置: 确认跳转类型和目标设置正确 - 测试动作组: 单独测试目标动作组是否能正常执行 - 检查循环跳转: 避免产生无限循环的跳转逻辑
调试工具和技巧
1. 截图验证法
步骤:
1. 在检测前添加截图动作
2. 执行脚本并查看截图
3. 手动确认目标元素是否存在
4. 对比检测结果和实际情况
2. 分步测试法
步骤:
1. 创建简化的测试脚本
2. 只包含检测动作,不包含其他操作
3. 逐个测试不同的检测参数
4. 确定最佳的检测配置
3. 日志分析法
关注日志内容:
- 检测开始和结束时间
- 检测结果(成功/失败)
- 错误信息和异常堆栈
- 执行路径和跳转信息
4. 参数对比法
测试不同参数组合:
- 不同的匹配阈值
- 不同的ROI区域设置
- 启用/禁用模糊匹配
- 不同的重试次数
高级技巧
1. 智能容错检测
通过配置多个相似目标提高检测容错性:
多文字容错:
目标文字列表:
- "确定"
- "确 定" (可能有空格)
- "确认" (相似含义)
- "OK" (英文版本)
多模板容错:
模板图片列表:
- 正常状态按钮
- 高亮状态按钮
- 不同主题的按钮
- 不同尺寸的按钮
2. 分层检测策略
结合不同精度的检测实现分层验证:
第一层:粗略检测
↓ 检测成功
第二层:精确检测
↓ 检测成功
执行目标动作
3. 条件链式检测
通过多个元素存在检查实现复杂的条件链:
检查A → 存在 → 检查B → 存在 → 检查C → 存在 → 执行动作
→ 不存在 → 跳转错误处理
5. 混合检测的高级应用
双重验证模式:
配置:与 逻辑
文字识别检测:"登录成功"
图像识别检测:用户头像
结果:两个都检测到才确认登录成功
容错增强模式:
配置:或 逻辑
文字识别检测:多个可能的状态文字
图像识别检测:多个可能的状态图标
结果:任意一个检测成功即为成功
智能补偿模式:
配置:混合检测
当文字识别不稳定时,图像识别作为备用
当图像识别不准确时,文字识别作为补充
提高整体检测的可靠性
常见问答 (FAQ)
Q1: 元素存在检查和普通检测动作有什么区别?
A: - 普通检测动作:作为独立动作执行,仅收集信息不影响流程 - 元素存在检查:作为修饰器在动作执行前进行,根据结果决定是否执行主动作
Q2: 什么时候应该使用混合检测?
A:
- 需要提高检测成功率时
- 目标元素包含文字和图像组合时
- 单一检测方式不够可靠时
- 需要多重验证确保准确性时
Q3: 混合检测的 或和与 逻辑如何选择?
A: - 或 逻辑:用于提高检测成功率,任一方式检测成功即可 - 与 逻辑:用于严格验证,需要两种方式都检测成功
Q4: 检测失败会中断脚本执行吗?
A: 不会。检测失败只会影响当前动作的执行策略(跳过或继续),不会中断整个脚本。
Q5: 可以在循环中使用元素存在检查吗?
A: 可以,但要注意性能影响。建议: - 合理设置检测间隔 - 使用ROI限制检测范围 - 避免过于复杂的检测条件
Q6: 元素存在检查支持嵌套使用吗?
A: 支持。可以在动作组内部的动作上配置元素存在检查,实现多层条件验证。
Q7: 如何优化检测性能?
A: 1. 选择合适的模板图片大小 2. 合理配置重试次数和间隔 3. 优先使用文字检测(通常比图片检测快)
Q8: 检测参数如何调试?
A: 1. 使用截图功能验证屏幕内容 2. 逐步调整检测参数 3. 分别测试单个检测目标 4. 观察日志分析失败原因
Q9: 如何处理界面变化导致的检测失败?
A: 1. 使用多目标检测提高适应性 2. 定期更新模板图片 3. 启用模糊匹配增加容错性 4. 设计备用的检测策略
总结
元素存在检查功能为脚本系统提供了强大的智能验证能力,通过合理的检测配置和行为设计,可以实现更加可靠和智能的自动化脚本执行。
关键要点: - 理解不同检测方式的适用场景和优势 - 合理配置检测参数和执行行为 - 利用混合检测提高检测效率和成功率 - 使用ROI区域和重试机制优化性能 - 通过调试和测试验证配置的正确性
正确使用元素存在检查功能可以让您的自动化脚本更加智能、可靠和高效!