XposedAppium
XposedAppium copied to clipboard
基于Xposed自动化框架
XposedAppium
简介:
基于Xposed做的一款自动化点击,滑动框架(基于安卓原生的事件分发)。可以模拟手指的一切操作 。 基于Xpath表达式获取View。
项目结构介绍:
App:目标App
xposedemo:Xposed模块的使用demo
XposedAppiumLib: XposedAppium库
实现原理:
通过Hook Application->dispatchActivityResumed(也可以Hook Activity的 onResume),包括Fragment里面的onResume等来监听页面的切换。实现执行自己的逻辑。
Api介绍:
有两个常用的类 PageManager 和 ViewImage
| PageManager | |
|---|---|
| getContext() | 获取当前Application的Context |
| getClassloader() | 获取当前Application的ClassLoader |
| ActivityFocusHandler | 需要处理的Activity接口 |
| FragmentFocusHandler | 需要处理的Fragment接口 |
| AlertDialogShowListener | 监听对话框Show的接口 |
| setTaskDuration | 设置任务时间间隔,这会影响case执行速度 |
| setDisable | 自动化插件的整体开关 |
| getMainLooperHandler | 获取主线程Handler对象 |
| SetDialogShowListener | 设置Show方法回调 |
| addHandler | 添加需要处理的Activity |
| getTopActivity | 获取当前Activity |
| getTopDialogWindow | 获取最上层对话框的Window对象可能为Null |
| getTopPupWindowView | 获取最上层PupView |
| tryGetTopView | 根据Xpath表达式获取ViewImage(对上层的全部View进行遍历) |
| getTopRootView | 获取最上层的并且显示的View,比如对话框 |
| getTopFragment | 获取最上层Fragment |
| ViewImage | |
|---|---|
| ViewImage(View originView) | 根据一个View生成ViewImage对象 |
| getType | 获取当前View的ClassName |
| getText | 尝试获取View的Text |
| setText | 尝试对TextView SetText |
| getOriginView | 获取ViewImage 原始View |
| childCount | 获取子孩子的个数 |
| childAt | 根据位置获取 |
| index | 获取位置 |
| getAllElements | 获取全部的子节点,包括父类,子类 |
| previousSibling | 获取上个兄弟节点 |
| rootViewImage | 获取父类ViewImage |
| xpath | 查找全部匹配项 |
| xpath2String | 根据xpath表达式拿到对应View里面的具体内容,类似"//android.widget.TextView[@contentDescription='XXXXXXXXXXXXXXXX']/text()" |
| xpath2One | 根据Xpath表达式获取ViewImage(对上层的全部View进行遍历,弹窗,Activity,悬浮窗等),返回第一个匹配项 |
| clickByXpath | 根据Xpath表达式 |
| typeByXpath | 对 TextView 类型 设置指定内容 |
| click | 点击当前View |
| swipe | 滑动当前View,开始坐标xy,结束坐标xy |
| swipeDown | 向下滑动,负值为向上 |
| toString | 打印当前view包括子view的全部属性 |
##Demo使用说明可参考 :
https://bbs.pediy.com/thread-260992-1.htm#1655864