# 检索模式

view 的节点树 有简洁模式和复杂模式

  • 简洁模式:view 树保留了重要的节点信息(默认的模式),缺点:会遗漏部分节点信息
  • 完整模式:view 树的所有节点信息都会存在,缺点:view 层级嵌套很深,比较复杂。
   mode(0);-- 切换为简洁模式
   -- mode(1);-- 切换为复杂模式
1
2

# 创建检索规则

建一个检索命令,检索命令支持链式编程增加规则内容

  • R 为 Rule的简写,代表了 规则
    R();
1

# 文本-检索

视频演示 (opens new window) 检索界面上所有 文本为 ‘退出’的节点。

  • 支持正则
    R():text("退出");
1

# ID-检索

视频演示 (opens new window) 检索界面上 id 为‘com.touchscrip/id123’的节点。

!某些App ID 是动态的,所以某些App id不利于全分辨率兼容(一般Appid 是完整单词的为静态id,如果是乱拼字母的,请谨慎使用id)

  • 节点id 可以用用浏览器查看 “设备ip:port/dump”
  • 支持正则
R():id("com.touchscrip/id123");
1

# 类型-检索

视频演示 (opens new window) 检索 界面上 类型 为 ‘TextView’的节点

  • 节点id 可以用用浏览器查看 “设备ip:port/dump”
  • 常用的节点类型:
    • TextView 文本类型
    • EditText 输入框
    • Button 按钮
    • ImageView 图片类型
    • LinerLayout 线性布局
    • Relevlayout 相对布局
    • FrameLayout 帧布局 支持正则
R():type("TextView");
1

# 描述-检索

视频演示 (opens new window) 检索 界面上 节点描述 为 ‘你好’的节点

  • 节点desc 可以用用浏览器查看 “设备ip:port/dump” 查看
R():desc("你好")
1

# 子节点数量-检索

视频演示 (opens new window) 查找出界面上子节点数量为 "3" 的节点

  • 子节点个数 可以用用浏览器查看 “设备ip:port/dump” 查看
R():childCount(3)
1

# 包名-检索

通过包名匹配控件(通常包名为当前打开应用的包名)

通常 可用此函数来判断是否已经切换到某个app

R():name("com.freespace.aplug");
1

# 路径-检索

通过路径 来匹配控件,此'路径' 含义:从根节点到当前节点所有的嵌套路径

建议多使用此函数,App 的层级不变,利于全分辨率兼容。 建议和 name检索配合使用 !某些App ID 是动态的,所以某些App id不利于全分辨率兼容(一般Appid 是完整单词的为静态id,如果是乱拼字母的,请谨慎使用id)

通常 可用此函数来判断是否已经切换到某个app

R():path("/FrameLayout/LinerLayout/TextView");
1

# 子节点条件-检索

视频演示 (opens new window) 查找出 子节点必须满足 text =123 的节点

  R():hasChild( R():text("123") );
1

# 屏幕范围-检索

视频演示 (opens new window) 创建一个规则,并增加屏幕范围检查规则

  • 参数:
    • 0 = 不限制是否在屏幕范围内。
    • 1 = 节点在屏幕中有显示
    • 2 = 节点不在屏幕中时生效
R():screen(0|1|2) -- 0,1,2 只能选填一个
1

# 页面-检索

创建一个规则,并增加页面检索规则

R():page("...");
1

# 执行目标-定位

创建一个规则,找到一批控件时,精准点击某一个

通常 配合 click,slid 函数使用

R():id("ttv"):target(1); -- 检索出所有id为'ttv' 的控件,当执行动作时候,只执行到第一个控件。
1

# 获取父节点

获取当前检测到节点的父节点,可获取(爷爷,太爷爷,太太爷爷 ...节点)

语法: getParent()

参数:

  • 不穿参数 默认获取第一个父节点
  • 1=父节点,2=爷爷节点,3=太爷爷节点,4...(依次往上推)
--找到文本为QQ的节点,并获取该节点的父节点
R():text("QQ"):getParent();
1
2

# 获取兄弟节点

获取当前检测到节点的 兄弟节点 (大哥,二哥,三哥,5弟,6弟,,,)

语法: getBrother()

参数:

  • 不传参数 默认获取同一个父节点下的 第一个节点
  • 1=父元素下的第一个节点
  • 2=父元素下的第二个节点
  • 3=父元素下的第三个节点
  • 4...更多
--获取 类型为LinerLayout的节点,并获取兄弟节点的 大哥(第一个节点)
R():type("LinearLayout"):getBrother();
1
2
--获取 类型为LinerLayout的节点,并获取兄弟节点中的第三个节点
R():text("LinearLayout"):getBrother(3);
1
2

# 获取兄弟节点(所有)

获取当前节点的所有兄弟节点

语法: getBrothers()

--获取 类型为LinerLayout的节点,并获取该节点的所有兄弟节点
R():text("LinearLayout"):getBrothers();
1
2

# 获取 子节点

获取当前检测到节点 子节点

语法: getChild()

参数:

  • 不穿参数 默认获取第一个孩子节点
  • 1=第一个孩子
  • 2=第二个孩子
  • 3=第三个孩子
  • 4...更多
--获取 类型为LinerLayout的节点,并获取第一个孩子节点
R():type("LinearLayout"):getChild();
1
2
--获取 类型为LinerLayout的节点,并获取第三个孩子节点
R():text("LinearLayout"):getChild(3);
1
2

# 获取 子节点(所有)

获取当前节点的所有子节点

语法: getChilds()

--获取 类型为LinerLayout的节点,并获取该节点的所有子节点
R():text("LinearLayout"):getChilds();
1
2

# 多个检索条件的 - 组合写法

视频演示 (opens new window) 查找 text为'你好'并且 类型为 'TextView' 并且 子节点个数为'3' 的所有节点

R():text("你好"):type("TextView"):childCount(3);
1