Interaction 交互模块
交互模块提供与 UI 元素进行交互的能力,包括 UI 元素查找、文本识别等功能。
UI 选择器 (UiSelector)
使用 GKD selector 语法查找屏幕上的 UI 控件,是 vFlow 最强大的交互模块之一。
选择器语法
选择器语法参考 GKD-Selector,支持以下定位方式:
基本选择器:
@ClassName # 按类名查找
@TextView # 查找 TextView 控件
@Button # 查找 Button 控件
@EditText # 查找输入框
@ImageView # 查找图片控件
属性匹配:
@TextView[text='设置'] # 精确匹配文本
@TextView[text~='设置'] # 包含文本
@TextView[text^='设置'] # 开头匹配
@TextView[text$='设置'] # 结尾匹配
@Button[id='btn_submit'] # 按 ID 查找
@Button[desc='提交按钮'] # 按内容描述查找
@TextView[clickable=true] # 布尔属性
组合条件:
@Button[text='确定'][clickable=true] # 同时满足多个条件
@TextView[text='标题'] + @Button # 相邻兄弟选择器
@LinearLayout > @TextView # 子元素选择器
输入参数:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| 选择器表达式 | 文本 | 必填 | GKD 选择器语法 |
| 结果选择 | 枚举 | 第一个 | 匹配多个时的选择策略 |
| 最大深度 | 数字 | 50 | UI 树遍历最大深度 |
结果选择策略:
第一个- 选择第一个匹配的元素最后一个- 选择最后一个匹配的元素最接近中心- 选择距离屏幕中心最近的元素最接近顶部- 选择位置最靠上的元素
输出参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| success | 布尔值 | 是否执行成功 |
| found | 布尔值 | 是否找到匹配元素 |
| count | 数字 | 匹配到的元素数量 |
| element | UI 元素 | 选中的 UI 元素 |
| all_elements | 列表 | 所有匹配元素的列表 |
UI 元素属性:
选中的 UI 元素包含以下属性,可通过魔法变量引用:
| 属性 | 类型 | 说明 |
|---|---|---|
| text | 文本 | 控件显示的文本 |
| desc | 文本 | 控件的内容描述 |
| id | 文本 | 控件的资源 ID |
| class | 文本 | 控件的类名 |
| clickable | 布尔值 | 是否可点击 |
| enabled | 布尔值 | 是否可用 |
| bounds | 坐标 | 控件的边界矩形 |
| center_x | 数字 | 控件中心 X 坐标 |
| center_y | 数字 | 控件中心 Y 坐标 |
使用示例:
# 查找并点击"登录"按钮
1. 添加"UI选择器"模块
2. 输入选择器: @Button[text='登录']
3. 添加"点击"模块,引用选择器的 element 属性
# 查找包含特定文本的元素
1. UI选择器: @TextView[text~='验证码']
2. 使用输出元素进行后续操作
查找文本 (FindTextUntil)
在屏幕上查找指定文本,支持超时设置和循环查找。
输入参数:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| 目标文本 | 文本/魔法变量 | 必填 | 要查找的文本 |
| 超时时间 | 数字 | 5000 | 超时时间(毫秒) |
| 查找间隔 | 数字 | 500 | 每次查找间隔(毫秒) |
输出参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| success | 布尔值 | 是否找到 |
| element | UI 元素 | 找到的 UI 元素 |
| found_text | 文本 | 找到的完整文本 |
OCR 光学字符识别
使用 OCR 技术识别屏幕上的文字。
输入参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| 识别区域 | 坐标(可选) | 指定识别区域,不指定则全屏 |
输出参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| text | 文本 | 识别到的文字 |
| confidence | 数字 | 识别置信度 |
使用场景:
- 识别非常规字体的文字
- 识别图片中的文字
- 处理动态渲染的文本
点击模块系列
UiButtonModule
查找并点击按钮。
输入参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| 选择器 | 文本/魔法变量 | UI 选择器表达式 |
UiTextModule
查找包含指定文本的元素并获取其文本内容。
输入参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| 目标文本 | 文本/魔法变量 | 要查找的文本 |
| 匹配模式 | 枚举 | 精确/包含/开头/结尾 |
输出参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| element | UI 元素 | 找到的元素 |
| text | 文本 | 元素的文本内容 |
UiSwitchModule
操作开关控件(Switch/CheckBox)。
输入参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| 选择器 | 文本/魔法变量 | 开关控件的选择器 |
| 目标状态 | 枚举 | 开/关/切换 |
UiInputModule
操作输入框控件。
输入参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| 选择器 | 文本/魔法变量 | 输入框的选择器 |
| 输入内容 | 文本/魔法变量 | 要输入的内容 |
| 清空输入 | 布尔值 | 输入前是否清空 |
常用工作流示例
登录流程自动化
1. 延时 2000ms # 等待界面加载
2. UI选择器 @EditText[hint='请输入账号']
3. 设置剪贴板 ${previous_step.element}
4. 文本输入 ${clipboard_content}
5. 延时 500ms
6. UI选择器 @EditText[hint='请输入密码']
7. 文本输入 'your_password'
8. UI选择器 @Button[text='登录']
9. 点击 ${selector_result.element}
表单填写自动化
1. UI选择器 @EditText[index=0]
2. 文本输入 '张三'
3. UI选择器 @EditText[index=1]
4. 文本输入 '12345678900'
5. UI选择器 @Button[text='提交']
6. 点击