控件查找器
from ascript.android.node import Selector
控件查找器,通过约束方法,和查询方法,来获取屏幕中满足条件的控件.
方法
事件监听
监听设备的各种事件,有 窗口事件,视图事件,通知宣告事件,触摸和手势事件,其他事件等.
仅支持无障碍模式下使用
- 函数
Selector.on_event(listener)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| listener | python函数(event) | 是 | 回调函数,必须包含一个形式参数用来接收变化的事件 关于android.view.accessibility.AccessibilityEvent |
- 示例
# 监听吐司信息
# 导包
# 导入控件检索相关
from ascript.android.node import Selector
from android.view.accessibility import AccessibilityEvent
# 事件回调函数
def on_event(event):
# print(event)
e_tp = event.getEventType()
if e_tp == AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED:
packageName = event.getPackageName()
message = ""
if event.getText() is not None and event.getText().size()>0:
message = event.getText().get(0)
print("来toast通知了",packageName,message)
# 开始监听无障碍事件
Selector.on_event(on_event)
控件缓存
是否启用控件缓存机制.
info
启用后,控件将不在刷新,请及时释放缓存
启用后,查找速度将有大幅度提升.
- 函数
Selector.cache(is_cache:bool, mode:int=0)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| is_cache | bool | 是 | True:打开缓存,缓存当前页面所有控件 False:关闭缓存 |
| mode | int | 否 | 缓存模式 |
- 示例
# 开启缓存
from ascript.android.node import Selector
Selector.cache(True)
# 关闭控件缓存
from ascript.android.node import Selector
Selector.cache(False)
创建查找器
创建一个控件查找器
- 函数
#class
Selector(mode:int,xpath=None)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| mode | int | 否 | 检索模式 0(默认):普通检索模式,这种模式下只展示重要控件1:复杂模式,这种模式下展示所有控件.层级会很深2:简单模式下过滤掉系统控件. 3:复杂模式下过滤掉系统控件 6:Hid控件模式 9:Root模式 |
| xpath | str | 否 | 使用xpath方式全局检索. |
- 示例
from ascript.android.node import Selector
# 创建一个选择器,简单模式检索
selector = Selector()
from ascript.android.node import Selector
# 创建一个选择器 ,复杂模式检索
Selector(1)
from ascript.android.node import Selector
# 创建一个选择器 ,简单模式,并且过滤掉系统控件
Selector(0|2)
from ascript.android.node import Selector
# 创建一个选择器 ,复杂模式,并且过滤掉系统控件
Selector(1|2)
from ascript.android.node import Selector
# 检索出所有控件类型是TextView的控件,并且text属性为开发者
Selector(xpath="//TextView[@text='开发者']")
查找控件一个
查找控件,返回一个满足条件的控件
- 函数
#class
Selector(mode:int).find()
- 返回值
Node 控件对象
- 示例
#案例:查找出符合条件的第一个控件
from ascript.android.node import Selector
node = Selector().find()
if node:
#找到了控件
print(node)
else:
print('没有找到任何控件')
查找控件全部
查找控件,返回满足条件的控件
- 函数
#class
Selector(mode:int).find_all(num:int=99999)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| num | int | 否 | 控件结果最大数量 默认:满足条件的所有 |
- 返回值
Node[] 控件对象列表
- 示例
#案例:查找出所有符合条件的控件
from ascript.android.node import Selector
nodes = Selector().find_all()
if nodes:
#找到了一组控件
print( len(nodes) )
else:
print('没有找到任何控件')
获取控件树
获取完整的控件树,返回Json树状格式
- 函数
#class
Selector.dump(mode:int=0)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| mode | int | 否 |