# 检索模式
view 的节点树 有简洁模式和复杂模式
- 简洁模式:view 树保留了重要的节点信息(默认的模式),缺点:会遗漏部分节点信息
- 完整模式:view 树的所有节点信息都会存在,缺点:view 层级嵌套很深,比较复杂。
mode(0);-- 切换为简洁模式
-- mode(1);-- 切换为复杂模式
2
# 创建检索规则
建一个检索命令,检索命令支持链式编程增加规则内容
- R 为 Rule的简写,代表了 规则
R();
# 文本-检索
视频演示 (opens new window) 检索界面上所有 文本为 ‘退出’的节点。
- 支持正则
R():text("退出");
# ID-检索
视频演示 (opens new window) 检索界面上 id 为‘com.touchscrip/id123’的节点。
!某些App ID 是动态的,所以某些App id不利于全分辨率兼容(一般Appid 是完整单词的为静态id,如果是乱拼字母的,请谨慎使用id)
- 节点id 可以用用浏览器查看 “设备ip:port/dump”
- 支持正则
R():id("com.touchscrip/id123");
# 类型-检索
视频演示 (opens new window) 检索 界面上 类型 为 ‘TextView’的节点
- 节点id 可以用用浏览器查看 “设备ip:port/dump”
- 常用的节点类型:
- TextView 文本类型
- EditText 输入框
- Button 按钮
- ImageView 图片类型
- LinerLayout 线性布局
- Relevlayout 相对布局
- FrameLayout 帧布局 支持正则
R():type("TextView");
# 描述-检索
视频演示 (opens new window) 检索 界面上 节点描述 为 ‘你好’的节点
- 节点desc 可以用用浏览器查看 “设备ip:port/dump” 查看
R():desc("你好")
# 子节点数量-检索
视频演示 (opens new window) 查找出界面上子节点数量为 "3" 的节点
- 子节点个数 可以用用浏览器查看 “设备ip:port/dump” 查看
R():childCount(3)
# 包名-检索
通过包名匹配控件(通常包名为当前打开应用的包名)
通常 可用此函数来判断是否已经切换到某个app
R():name("com.freespace.aplug");
# 路径-检索
通过路径 来匹配控件,此'路径' 含义:从根节点到当前节点所有的嵌套路径
建议多使用此函数,App 的层级不变,利于全分辨率兼容。 建议和 name检索配合使用 !某些App ID 是动态的,所以某些App id不利于全分辨率兼容(一般Appid 是完整单词的为静态id,如果是乱拼字母的,请谨慎使用id)
通常 可用此函数来判断是否已经切换到某个app
R():path("/FrameLayout/LinerLayout/TextView");
# 子节点条件-检索
视频演示 (opens new window) 查找出 子节点必须满足 text =123 的节点
R():hasChild( R():text("123") );
# 屏幕范围-检索
视频演示 (opens new window) 创建一个规则,并增加屏幕范围检查规则
- 参数:
- 0 = 不限制是否在屏幕范围内。
- 1 = 节点在屏幕中有显示
- 2 = 节点不在屏幕中时生效
R():screen(0|1|2) -- 0,1,2 只能选填一个
# 页面-检索
创建一个规则,并增加页面检索规则
R():page("...");
# 执行目标-定位
创建一个规则,找到一批控件时,精准点击某一个
通常 配合 click,slid 函数使用
R():id("ttv"):target(1); -- 检索出所有id为'ttv' 的控件,当执行动作时候,只执行到第一个控件。
# 获取父节点
获取当前检测到节点的父节点,可获取(爷爷,太爷爷,太太爷爷 ...节点)
语法: getParent()
参数:
- 不穿参数 默认获取第一个父节点
- 1=父节点,2=爷爷节点,3=太爷爷节点,4...(依次往上推)
--找到文本为QQ的节点,并获取该节点的父节点
R():text("QQ"):getParent();
2
# 获取兄弟节点
获取当前检测到节点的 兄弟节点 (大哥,二哥,三哥,5弟,6弟,,,)
语法: getBrother()
参数:
- 不传参数 默认获取同一个父节点下的 第一个节点
- 1=父元素下的第一个节点
- 2=父元素下的第二个节点
- 3=父元素下的第三个节点
- 4...更多
--获取 类型为LinerLayout的节点,并获取兄弟节点的 大哥(第一个节点)
R():type("LinearLayout"):getBrother();
2
--获取 类型为LinerLayout的节点,并获取兄弟节点中的第三个节点
R():text("LinearLayout"):getBrother(3);
2
# 获取兄弟节点(所有)
获取当前节点的所有兄弟节点
语法: getBrothers()
--获取 类型为LinerLayout的节点,并获取该节点的所有兄弟节点
R():text("LinearLayout"):getBrothers();
2
# 获取 子节点
获取当前检测到节点 子节点
语法: getChild()
参数:
- 不穿参数 默认获取第一个孩子节点
- 1=第一个孩子
- 2=第二个孩子
- 3=第三个孩子
- 4...更多
--获取 类型为LinerLayout的节点,并获取第一个孩子节点
R():type("LinearLayout"):getChild();
2
--获取 类型为LinerLayout的节点,并获取第三个孩子节点
R():text("LinearLayout"):getChild(3);
2
# 获取 子节点(所有)
获取当前节点的所有子节点
语法: getChilds()
--获取 类型为LinerLayout的节点,并获取该节点的所有子节点
R():text("LinearLayout"):getChilds();
2
# 多个检索条件的 - 组合写法
视频演示 (opens new window) 查找 text为'你好'并且 类型为 'TextView' 并且 子节点个数为'3' 的所有节点
R():text("你好"):type("TextView"):childCount(3);