# 获取页面信息
通过此函数可以查看到 当前页面的名称,包名,所属应用等信息
# getPageInfo() 页面信息
--案例:
local info = getPageInfo();
if info then
print(info.name);-- 当前应用名称
print(info.packageName);-- 当前应用的id
print(info.activity);--当前页面的名称
end
2
3
4
5
6
7
8
# 检索模式
切换 view 的节点树 有简洁模式和复杂模式
# mode() 切换模式
可通过此命令来切换View 的检索模式,模式会影响辅助和view树检索工具
--案例:
mode(0);-- 切换为简洁模式
-- mode(1);-- 切换为复杂模式
2
3
# 检索节点
通过命令组合,可以查找到设备上的控件信息,从来来辅助脚本运行。
# find() 检索一个节点
(opens new window) 该命令只会检索出一个节点结果来
--案例:
local rule = R():id("com.freespace.aplug:id/tv_title_ip");
local view = find(rule);
if view then
print(view.text); -- 节点的文本 string
print(view.id); -- 节点的id string
print(view.desc); -- 节点的描述 string
print(view.isClick) -- 节点是否可点击 boolean
print(view.type) -- 节点类型 string
print(view.isChecked) -- 节点是否被勾选|选中 boolean
print(view.childCount)-- 节点包含的子控件个数 number
print(view.rect.left..','..view.rect.top..','..view.rect.right..','..view.rect.bottom);
-- 节点在屏幕上显示的区域 table 前两位区域左上角坐标,后两位区域右下角坐标
end
2
3
4
5
6
7
8
9
10
11
12
13
14
# finds() 检索一组节点
(opens new window) 该命令会检索出所有符合条件的节点结果来
--案例:
local rule = R():type("TextView"):text(".*设备.*");
local views = finds(rule);
for k,view in pairs(views) do
print("第"..k.."个控件")
print(view.text); -- 节点的文本 string
print(view.id); -- 节点的id string
print(view.desc); -- 节点的描述 string
print(view.isClick) -- 节点是否可点击 boolean
print(view.type) -- 节点类型 string
print(view.isChecked) -- 节点是否被勾选|选中 boolean
print(view.childCount)-- 节点包含的子控件个数 number
print(view.rect.left..','..view.rect.top..','..view.rect.right..','..view.rect.bottom);
-- 节点在屏幕上显示的区域 table 前两位区域左上角坐标,后两位区域右下角坐标
end
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 检索规则
检索规则,类似一条搜索语句,配合find,finds 可以检索出界面的控件信息。
# R() 创建检索规则
建一个检索命令,检索命令支持链式编程增加规则内容 "R 为 Rule的简写,代表了 规则"
--案例:
R();
2
# :text() 文本-检索
(opens new window) 根据文本检索界面上的控件
--案例:
R():text("退出"); -- 找出文本为退出的控件
--正则案例:
-- R():text(".*退出.*"); -- 找出包含退出的控件
2
3
4
5
# :id() ID-检索
(opens new window) 根据id检索界面上的控件
某些App ID 是动态的,所以某些App id不利于全分辨率兼容(一般Appid 是完整单词的为静态id,如果是乱拼字母的,请谨慎使用id)
--案例:
R():id("com.touchscrip/id123");
2
# :type() 类型-检索
(opens new window) 根据控件类型来检索界面上的控件
参数
--案例:
R():type("TextView");
2
# :desc() 描述-检索
(opens new window) 根据描述来检索界面上的控件
-- 案例:
R():desc("你好")
-- 正则案例:
-- R():desc(".*你好.*")
2
3
4
5
# :childCount() 子节点数量-检索
(opens new window) 根据子控件的个数来检索控件
--案例:
R():childCount(3)
2
# :name() 包名-检索
(opens new window) 通过包名匹配控件(通常包名为当前打开应用的包名)
可用此函数来判断是否已经切换到某个app
-- 案例:
R():name("com.freespace.aplug");
2
# :path() 路径-检索
- :path(s)
(opens new window) 通过路径 来匹配控件,此'路径' 含义:从根节点到当前节点所有的嵌套路径
建议多使用此函数,App 的层级不变,利于全分辨率兼容。
建议和 name检索配合使用
--案例
R():path("/FrameLayout/LinerLayout/TextView");
2
# :hasChild() 子节点条件-检索
(opens new window) 通过约定 子控件需要满足的规则,来查找控件
--案例:
R():hasChild( R():text("123") );
2
# :screen() 屏幕范围-检索
(opens new window) 根据屏幕显示范围 来检索控件
-- 案例:
R():screen(0|1|2) -- 0,1,2 只能选填一个
2
# :page() 页面检索
创建一个规则,指定查找控件的所属页面
-- 案例:
R():page:("sss"); -- 检索出page为sss的控件
2
# :target() 执行目标-定位
创建一个规则,找到一批控件时,精准点击某一个
通常 配合 click,slid 函数使用
-- 案例:
R():id("ttv"):target(1); -- 检索出所有id为'ttv' 的控件,当执行动作(点击|滑动)时候,只执行到第一个控件。
2
# :getParent() 获取父节点
- :getParent(n)
获取当前检测到节点的父节点,可获取(爷爷,太爷爷,太太爷爷 ...节点)
-- 案例:
R():text("QQ"):getParent(); --找到文本为QQ的节点,并获取该节点的父节点
2
# :getBrother() 获取兄弟节点
获取当前检测到节点的 兄弟节点 (大哥,二哥,三哥,5弟,6弟,,,老幺)
参数
-- 案例:
R():type("LinearLayout"):getBrother(); --获取 类型为LinerLayout的控件,并获取兄弟节点的 大哥(第一个控件)
-- 获取 类型为LinerLayout的控件,并获取兄弟节点中的第三个控件
R():text("LinearLayout"):getBrother(3);
-- 获取 类型为LinerLayout的控件,并获取兄弟节点中的倒数第二个控件
R():text("LinearLayout"):getBrother(-2);
2
3
4
5
6
7
8
9
# :getBrothers() 所有兄弟节点
获取当前节点的所有兄弟节点
-- 案例:
R():text("LinearLayout"):getBrothers(); --获取 类型为LinerLayout的节点,并获取该节点的所有兄弟节点
2
# :getChild() 获取子节点
获取当前检测到节点 子节点
-- 案例
R():type("LinearLayout"):getChild(); --获取 类型为LinerLayout的节点,并获取第一个孩子节点
R():text("LinearLayout"):getChild(3); --获取 类型为LinerLayout的节点,并获取第三个孩子节点
2
3
4
5
# :getChilds() 所有子节点
- :getChilds()
获取当前节点的所有子节点
-- 案例
R():text("LinearLayout"):getChilds(); --获取 类型为LinerLayout的节点,并获取该节点的所有子节点
2
# 组合写法
R():id():text(""):desc()....
(opens new window) 可以把多个检索条件组合起来,进行精准检索
-- 案例:
R():text("你好"):type("TextView"):childCount(3);
-- 查找 text为'你好'并且 类型为 'TextView' 并且 子节点个数为'3' 的所有节点
2
3