Skip to main content

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 选择器语法
结果选择枚举第一个匹配多个时的选择策略
最大深度数字50UI 树遍历最大深度

结果选择策略:

  • 第一个 - 选择第一个匹配的元素
  • 最后一个 - 选择最后一个匹配的元素
  • 最接近中心 - 选择距离屏幕中心最近的元素
  • 最接近顶部 - 选择位置最靠上的元素

输出参数:

参数类型说明
success布尔值是否执行成功
found布尔值是否找到匹配元素
count数字匹配到的元素数量
elementUI 元素选中的 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布尔值是否找到
elementUI 元素找到的 UI 元素
found_text文本找到的完整文本

OCR 光学字符识别

使用 OCR 技术识别屏幕上的文字。

输入参数:

参数类型说明
识别区域坐标(可选)指定识别区域,不指定则全屏

输出参数:

参数类型说明
text文本识别到的文字
confidence数字识别置信度

使用场景:

  • 识别非常规字体的文字
  • 识别图片中的文字
  • 处理动态渲染的文本

点击模块系列

UiButtonModule

查找并点击按钮。

输入参数:

参数类型说明
选择器文本/魔法变量UI 选择器表达式

UiTextModule

查找包含指定文本的元素并获取其文本内容。

输入参数:

参数类型说明
目标文本文本/魔法变量要查找的文本
匹配模式枚举精确/包含/开头/结尾

输出参数:

参数类型说明
elementUI 元素找到的元素
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. 点击