隐藏

autojs常用命令集合

发布:2023/10/25 23:31:23作者:管理员 来源:本站 浏览次数:835

/**以下全部是基于控件 基于坐标的暂不整理 */
/**
* 第一步一定要先开启无障碍服务 最好7.0以上 7.0以下的有的命令需要root权限才可以 就没有意义了
*/
auto();//会自动检查是否开启无障碍 如果未开启会自动跳转到开启界面选择开启即可;
//<--------------- 点击命令 ---------------->
//点击文本 就是比如按钮中的文字
click(text,i)//text {string} 要点击的文本 i {number} 如果相同的文本在屏幕中出现多次,则i表示要点击第几个文本, i从0开始计算 如果不填写 默认是点击所有
click("啦啦啦", 0)//表示点击屏幕上第一个"啦啦啦", click("啦啦啦", 1)表示点击屏幕上第二个"啦啦啦"。
longClick(text, i)//长按的意思
UiObject.click()//控件点击
UiObject.longClick()//控件长按
//<--------------- 滑动命令 ---------------->
scrollUp(i) //上滑此命令经测试在安卓7.0以下也有效i {number} 要滑动的控件序号
scrollDown(i)//下滑和上述同理
UiObject.scrollForward()//控件下滑
UiObject.scrollBackward()//向后滑动
UiObject.scrollUp()//对集合中所有控件执行向上滑的操作
UiObject.scrollDown()//对集合中所有控件执行向下滑的操作
UiObject.scrollLeft()//对集合中所有控件执行向左滑的操作
UiObject.scrollRight()//右滑
//<--------------- 输入命令 ---------------->
setText(i,text)//输入文本i表示第一个输入框 从0开始计数
input(i,text)//输入文本i表示第一个输入框 从0开始计数
//两者区别 第一个是清空并填写 第二个是在原基础上追加(append)
UiObject.setText(text)//控制输入
UiObject.copy()//控件复制
UiObject.cut()//剪切
UiObject.paste()//粘贴
/**
* 常见控件的类名如下:
android.widget.TextView 文本控件
android.widget.ImageView 图片控件
android.widget.Button 按钮控件
android.widget.EditText 输入框控件
android.widget.AbsListView 列表控件
android.widget.LinearLayout 线性布局
android.widget.FrameLayout 帧布局
android.widget.RelativeLayout 相对布局
android.widget.RelativeLayout 相对布局
android.support.v7.widget.RecyclerView 通常也是列表控件
*/
//<--------------- 其他命令整合(用到没有上述那么常用) ---------------->
UiSelector.textContains(str) //包含文本
UiSelector.textStartsWith(prefix)//以文本开头的组件
UiSelector.desc(str)//获取描述
UiSelector.descContains(str)//获取包含描述
UiSelector.descStartsWith(prefix)//获取开头包含描述
UiSelector.descEndsWith(suffix)//获取结尾包含描述
UiSelector.descMatches(reg)//正则表达式
UiSelector.id(resId)//id
UiSelector.idContains(str)//包含id
UiSelector.idStartsWith(prefix)//开始id
UiSelector.idEndsWith(suffix)//结束id
UiSelector.idMatches(reg)//正则表达式ID
UiSelector.className(str)//类
UiSelector.classNameContains(str)//包含类
UiSelector.classNameStartsWith(prefix)//开始类
UiSelector.classNameEndsWith(suffix)//结尾类
UiSelector.classNameMatches(reg)//正则类
UiSelector.packageName(str)//包名
UiSelector.packageNameContains(str)//包含包
UiSelector.packageNameStartsWith(prefix)//开头包
UiSelector.packageNameEndsWith(suffix)//结束包
UiSelector.packageNameMatches(reg)//正则包
UiSelector.bounds(left, top, right, buttom)//组件范围
UiSelector.boundsInside(left, top, right, buttom)//区域选择查找控件
UiSelector.boundsContains(left, top, right, buttom)//也是区域查找
UiSelector.drawingOrder(order)//绘制顺序
UiSelector.clickable([b = true])//是否可以点击
UiSelector.longClickable([b = true])// 表示控件是否可长按
UiSelector.checkable([b = true])//表示控件是否可勾选
UiSelector.selected([b = true])//表示控件是否被选
UiSelector.enabled([b = true])//表示控件是否已启用
UiSelector.scrollable([b = true])//表示控件是否可滑动
UiSelector.editable([b = true])//表示控件是否可编辑
UiSelector.multiLine([b = true])//表示文本或输入框控件是否是多行显示的
UiSelector.findOne()//找一个 ******** 阻塞 *******
UiSelector.findOne(timeout)//超时查找 ******** 阻塞 *******
UiSelector.findOnce()//找不到返回空
UiSelector.findOnce(i)//找第几个
UiSelector.find()//找所有
UiSelector.untilFind()//直到找到
UiSelector.exists()//是否存在
UiSelector.waitFor()//一直等待 ******** 阻塞 *******
UiSelector.filter(f) //过滤函数
/**
* 例如,要找出屏幕上所有文本长度为10的文本控件的代码为:
var uc = className("TextView").filter(function(w){
return w.text().length == 10;
});
*/
UiObject.setSelection(start, end)//
/**
* 对输入框控件设置选中的文字内容,并返回是否操作成功。
索引是从0开始计算的;并且,选中内容不包含end位置的字符。例如,如果一个输入框内容为"123456789",要选中"4567"的文字的代码为et.setSelection(3, 7)。
该函数也可以用来设置光标位置,只要参数的end等于start,即可把输入框光标设置在start的位置。例如et.setSelection(1, 1)会把光标设置在第一个字符的后面。
*/
UiObject.collapse()//控件折叠
children()//返回该控件的所有子控件组成的控件集合。可以用于遍历一个控件的子控件
childCount()//返回子控件数目。
child(i)//返回第i+1个子控件
parent()//父控件
bounds()//范围
boundsInParent()//返回控件在父控件中的范围
drawingOrder()//返回控件在父控件中的绘制次序。该函数在安卓7.0及以上才有效,7.0以下版本调用会返回0。
id()//获取控件的id,如果一个控件没有id,则返回null。
text()//获取控件的文本,如果控件没有文本,返回""。
findByText(str)//根据文本text在子控件中递归地寻找并返回文本或描述(desc)包含这段文本str的控件,返回它们组成的集合。该函数会在当前控件的子控件,孙控件,曾孙控件...中搜索text或desc包含str的控件,并返回它们组合的集合。
findOne(selector)//根据选择器selector在该控件的子控件、孙控件...中搜索符合该选择器条件的控件,并返回找到的第一个控件;如果没有找到符合条件的控件则返回null。
/**
* 例如,对于酷安动态列表,我们可以遍历他的子控件(每个动态列表项),并在每个子控件中依次寻找点赞数量和图标,对于点赞数量小于10的点赞:
//找出动态列表
var list = id("recycler_view").findOne();
//遍历动态
list.children().forEach(function(child){
//找出点赞图标
var like = child.findOne(id("feed_action_view_like"));
//找出点赞数量
var likeCount = child.findOne(id("text_view"));
//如果这两个控件没有找到就不继续了
if(like == null || likeCount == null){
return;
}
//判断点赞数量是否小于10
if(parseInt(likeCount.text()) < 10){
//点赞
like.click();
}
});
*/
find(selector)//根据选择器selector在该控件的子控件、孙控件...中搜索符合该选择器条件的控件,并返回它们组合的集合。
UiCollection//控件数量
/**
* UiCollection"继承"于数组,实际上是一个UiObject的数组,因此可以使用数组的函数和属性,例如使用length属性获取UiCollection的大小,使用forEach函数来遍历UiCollection。
例如,采用forEach遍历屏幕上所有的文本控件并打印出文本内容的代码为:
console.show();
className("TextView").find().forEach(function(tv){
if(tv.text() != ""){
log(tv.text());
}
});
也可以使用传统的数组遍历方式:
console.show();
var uc = className("TextView").find();
for(var i = 0; i < uc.length; i++){
var tv = uc[i];
if(tv.text() != ""){
log(tv.text());
}
}
UiCollection的每一个元素都是UiObject,我们可以取出他的元素进行操作,例如取出第一个UiObject并点击的代码为ui[0].click()。如果想要对该集合的所有元素进行操作,可以直接在集合上调用相应的函数,例如uc.click(),该代码会对集合上所有UiObject执行点击操作并返回是否全部点击成功。
因此,UiCollection具有所有UiObject对控件操作的函数,包括click(), longClick(), scrollForward()等等,不再赘述。
*/
UiCollection.size()//返回集合中的控件数。 历史遗留函数,相当于属性length。
UiCollection.get(i)//返回集合中第i+1个控件(UiObject)。历史遗留函数,建议直接使用数组下标的方式访问元素。
empty()//返回控件集合是否为空。
nonEmpty()//返回控件集合是否非空。
UiCollection.find(selector)//根据selector所确定的条件在该控件集合的控件、子控件、孙控件...中找到所有符合条件的控件并返回找到的控件集合。注意这会递归地遍历控件集合里所有的控件以及他们的子控件。和数组的filter函数不同。
UiCollection.findOne(selector)//根据选择器selector在该控件集合的控件的子控件、孙控件...中搜索符合该选择器条件的控件,并返回找到的第一个控件;如果没有找到符合条件的控件则返回null。