-
setScreenMetrics(width, height)在width*height的设备中,坐标操作自适应
-
width {number} //屏幕宽度,单位像素
-
height {number} //屏幕高度,单位像素
-
click(x, y)//点击
-
longClick(x, y)//长按
-
press(x, y, duration)//按住
-
swipe(x1, y1, x2, y2, duration)//滑动
-
swipeEx(x1, y1, x2, y2, duration)//仿真随机曲线滑动
-
gesture(duration, [x1, y1], [x2, y2], …)//手势路径,时长2s
-
gestures([delay1, duration1, [x1, y1], [x2, y2], …], [delay2, duration2, [x3, y3], [x4, y4], …], …)//延时多点手势路径
-
UiSelector.text(str)//text控件str
-
UiSelector.textContains(包含)//包含
-
UiSelector.textStartsWith(前缀)//前缀
-
UiSelector.textEndsWith(后缀)//后缀
-
UiSelector.textMatches(正则)//正则
-
UiSelector.desc(str)//desc控件str
-
UiSelector.descContains(前缀)//前缀
-
UiSelector.descStartsWith(prefix)//
-
UiSelector.descEndsWith(suffix)//
-
UiSelector.descMatches(正则)//正则
-
UiSelector.id(str)//id控件str
-
UiSelector.idContains(包含)//包含
-
UiSelector.idStartsWith(前缀)//前缀
-
UiSelector.idEndsWith(后缀)//后缀
-
UiSelector.idMatches(正则)//正则
-
UiSelector.className(str)//className控件str
-
UiSelector.classNameContains(包含)包含
-
UiSelector.classNameStartsWith(前缀)//前缀
-
UiSelector.classNameEndsWith(后缀)//后缀
-
UiSelector.classNameMatches(正则)为正则
-
UiSelector.packageName(str)packageName控件str
-
UiSelector.packageNameContains(包含)包含
-
UiSelector.packageNameStartsWith(前缀)//前缀
-
UiSelector.packageNameEndsWith(后缀)//后缀
-
UiSelector.packageNameMatches(正则)//正则
-
(左边距;上边距;下边距;右边距)
-
UiSelector.bounds(left, top, right, buttom)//定位控件的bounds属性为屏幕上显示的范围。
-
UiSelector.boundsInside(left, top, right, buttom)在参数构成的范围里面查找符合条件的控件。用于限制选择器在某一个区域选择控件。
-
UiSelector.boundsContains(left, top, right, buttom)在参数构成的范围里面查找符合条件的控件。用于限制控件的范围必须包含所给定的范围。
-
UiSelector.drawingOrder(number)//为一个控件在父控件中的绘制顺序,通常可以用于区分同一层次的控件。为当前选择器附加控件"drawingOrder等于order"的条件。
-
UiSelector.clickable([b = true])为当前选择器附加控件是否可点击的条件。类名为android.view.View的控件大多可点击
-
UiSelector.longClickable([b = true])为当前选择器附加控件是否可长按的条件。
-
UiSelector.checkable([b = true])为当前选择器附加控件是否可勾选的条件。
-
UiSelector.selected([b = true])为当前选择器附加控件是否已选中的条件。
-
UiSelector.enabled([b = true])为当前选择器附加控件是否已启用的条件。
-
UiSelector.scrollable([b = true])为当前选择器附加控件是否可滑动的条件。可以用这个条件来寻找可滑动控件来滑动界面。
-
UiSelector.editable([b = true])为当前选择器附加控件是否可编辑的条件;一般来说可编辑的控件为输入框(EditText)但不是所有
-
UiSelector.multiLine([b = true])为当前选择器附加控件是否文本或输入框控件是否是多行显示的条件。
-
UiSelector.findOne()对屏幕上的控件进行搜索,找不到控件,当屏幕内容发生变化时会重新寻找,直到屏幕上出现并返回该控件。未出现则阻塞
-
UiSelector.findOne(timeout)毫秒的时间内没有找到终止搜索并返回null
-
UiSelector.findOnce()对屏幕上的控件进行搜索,只找一次;返回第1个符合条件的控件;否则返回null
-
UiSelector.findOnce(i)对屏幕上的控件进行搜索,只找一次;返回第 i + 1 个符合条件的控件;否则返回null
-
UiSelector.find()对屏幕上的控件进行搜索,找到所有满足条件的控件集合并返回。只进行一次
-
empty()函数判断找到的是否为空
-
UiSelector.untilFind()对屏幕上的控件进行搜索,直到找到至少一个满足条件的控件为止,并返回所有满足条件的控件集合。
-
UiSelector.exists()判断屏幕上是否存在控件符合选择器所确定的条件;一般搭配if使用
-
UiSelector.waitFor()等待屏幕上出现符合条件的控件;在满足该条件的控件出现之前,该函数会一直保持阻塞。
-
UiSelector.filter(f)为当前选择器附加自定义的过滤条件。
-
exits() 判断控件是否存在
-
waitFor() 等待控件出现
-
UiObject.click()//点击该控件,并返回是否点击成功。
-
UiObject.longClick()//长按该控件,并返回是否点击成功。
-
UiObject.setText(text)//设置输入框控件的文本内容,并返回是否设置成功。
-
UiObject.copy()//对输入框文本的选中内容进行复制,并返回是否操作成功。
-
UiObject.cut()//对输入框文本的选中内容进行剪切,并返回是否操作成功。
-
UiObject.paste()//对输入框控件进行粘贴操作,把剪贴板内容粘贴到输入框中,并返回是否操作成功。
-
UiObject.setSelection(start, end)//对输入框控件设置选中的文字内容,并返回是否操作成功。
-
UiObject.scrollForward()//对控件执行向前滑动的操作,并返回是否操作成功。
-
UiObject.scrollBackward()//对控件执行向后滑动的操作,并返回是否操作成功。
-
UiObject.select()//对控件执行"选中"操作,并返回是否操作成功。"选中"和isSelected()的属性相关
-
UiObject.collapse()//对控件执行折叠操作,并返回是否操作成功。
-
UiObject.expand()//对控件执行操作,并返回是否操作成功。
-
UiObject.show()//对集合中所有控件执行显示操作,并返回是否全部操作成功。
-
UiObject.scrollUp()//对集合中所有控件执行向上滑的操作,并返回是否全部操作成功。
-
UiObject.scrollDown()//对集合中所有控件执行向下滑的操作,并返回是否全部操作成功。
-
UiObject.scrollLeft()//对集合中所有控件执行向左滑的操作,并返回是否全部操作成功。
-
UiObject.scrollRight()//对集合中所有控件执行向右滑的操作,并返回是否全部操作成功。
-
children()//返回该控件的所有子控件组成的控件集合。可以用于遍历一个控件的子控件
-
childCount()//返回子控件数目。
-
parent()//返回该控件的父控件。如果该控件没有父控件,返回null。
-
bounds()//返回控件在屏幕上的范围,其值是一个Rect对象。
-
boundsInParent()//返回控件在父控件中的范围,其值是一个Rect对象。
-
drawingOrder()//返回控件在父控件中的绘制次序。
-
id()//获取控件的id,如果一个控件没有id,则返回null。
-
text()//获取控件的文本,如果控件没有文本,返回""。
-
findByText(str)//根据文本text在子控件中递归地寻找并返回文本或描述(desc)包含这段文本str的控件,返回它们组成的集合。
-
findOne(selector)//根据选择器selector在该控件的子控件、孙控件…中搜索符合该选择器条件的控件,并返回找到的第一个控件;如果没有找到符合条件的控件则返回null。
-
find(selector)//根据选择器selector在该控件的子控件、孙控件…中搜索符合该选择器条件的控件,并返回它们组合的集合。
-
UiCollection//控件集合, 通过选择器的find(), untilFind()方法返回的对象。
-
UiCollection.size()//返回集合中的控件数。历史遗留函数,相当于属性length。
-
UiCollection.get(i)//返回集合中第i+1个控件(UiObject)。历史遗留函数,建议直接使用数组下标的方式访问元素。
-
UiCollection.each(func)//遍历集合。历史遗留函数,相当于forEach。参考forEach。
-
empty()//返回控件集合是否为空。
-
nonEmpty()//返回控件集合是否非空。
-
UiCollection.find(selector)//根据selector所确定的条件在该控件集合的控件、子控件、孙控件…中找到所有符合条件的控件并返回找到的控件集合。
-
UiCollection.findOne(selector)//根据选择器selector在该控件集合的控件的子控件、孙控件…中搜索符合该选择器条件的控件,并返回找到的第一个控件;
-
如果没有找到符合条件的控件则返回null。
-
files.createWithDirs(path); // 创建一个文件或文件夹并返回是否创建成功。如果文件所在文件夹不存在,则先创建他所在的一系列文件夹
-
举个例子:
-
files.createWithDirs("/sdcard/新文件夹/新文件夹/新文件夹/1.txt");
-
files.exists(path); // 返回在路径path处的文件是否存在。
-
举个例子:
-
log(files.exists("/sdcard/新文件夹/新文件夹/新文件夹/1.txt"));
-
files.read(path[, encoding = "utf-8"]); // 读取文本文件path的所有内容并返回
-
举个例子:
-
log(files.read("/sdcard/1.txt", encoding = "utf-8"));
-
files.write(path, text); // 把text写入到文件path中。 新的text会覆盖以前的
-
举个例子:
-
var text = "这是一个文件内容";
-
// 判断是否有此文件,如果没就创建一个
-
files.createWithDirs("/sdcard/1.txt");
-
//写入文件
-
files.write("/sdcard/1.txt", text);
-
//用其他应用查看文件
-
app.viewFile("/sdcard/1.txt");
-
files.append(path, text); // 把text追加到文件path的末尾
-
举个例子:
-
var text = "追加的文件内容";
-
files.append("/sdcard/1.txt", text);
-
files.append("/sdcard/1.txt", text);
-
//用其他应用查看文件
-
app.viewFile("/sdcard/1.txt");
-
files.copy(fromPath, toPath); // 复制文件,返回是否复制成功
-
举个例子:
-
files.copy("/sdcard/1.txt", "/sdcard/Download/1.txt");
-
files.move(fromPath, toPath); // 移动文件,返回是否移动成功也可改名
-
举个例子:
-
files.move("/sdcard/1.txt", "/sdcard/Download/1.txt");
-
files.getName(path); // 返回文件的文件名
-
举个例子:
-
log(files.getName("/sdcard/1.txt"));
-
files.remove(path); // 删除文件或空文件夹,返回是否删除成功
-
举个例子:
-
log(files.remove("/sdcard/1.txt"));
-
files.removeDir(path); // 删除文件夹,如果文件夹不为空,则删除该文件夹的所有内容再删除该文件夹
-
举个例子:
-
log(files.removeDir("/sdcard/1.txt"));
-
files.getSdcardPath(); // 返回SD卡路径
-
举个例子:
-
log(files.getSdcardPath()); // 返回结果:/storage/emulated/0
-
close(); // 关闭该文件
-
sleep(n); // n:暂停运行n毫秒的时间。1秒等于1000毫秒。
-
举个例子:
-
sleep(1000); // 暂停运行1秒
-
currentPackage(); // 返回正在运行的应用的包名
-
举个例子:
-
log(currentPackage()); // 返回:org.autojs.autojspro
-
currentActivity(); // 返回正在运行的Activity的名称
-
举个例子:
-
log(currentActivity()); // 返回:org.autojs.autojs.ui.main.MainActivity
-
toast(message); // 以气泡显示信息message几秒
-
举个例子:
-
toast("你好autoJS"); // 屏幕出现 你好autoJS 字样,几秒后消失
-
toastLog(message); // 显示信息message并在控制台中输出
-
举个例子:
-
toastLog("你好autoJS"); // 屏幕和控制台同时出现 你好autoJS 字样
-
waitForActivity(activity]); // activity:等待指定的Activity出现,period:为检查Activity的间隔。
-
举个例子:
-
log(waitForActivity("org.autojs.autojs.ui.main.MainActivity"));
-
waitForPackage(package); // 等待指定的应用出现
-
举个例子:
-
waitForPackage("org.autojs.autojspro");
-
exit(); // 立即停止脚本运行。
-
random(min, max); // 返回一个在[min...max]之间的随机数
-
举个例子:
-
log(random(0, 2)); // 返回可能时0,1,2
-
random(); // 返回一个[0,1)的随机浮点数
-
http.get(url,options,callback); // 对地址url进行一次GET请求,option:加入请求头,callback:回调函数
-
举个例子:
-
console.show();
-
var r = http.get("www.baidu.com");
-
log("code = " + r.statusCode);
-
log("html = " + r.body.string());
-
option:
-
console.show();
-
var r = http.get("www.baidu.com", {
-
headers: {
-
'Accept-Language': 'zh-cn,zh;q=0.5',
-
'User-Agent': 'Mozilla/5.0(Macintosh;IntelMacOSX10_7_0)AppleWebKit/535.11(KHTML,likeGecko)Chrome/17.0.963.56Safari/535.11'
-
}
-
});
-
log("code = " + r.statusCode);
-
log("html = " + r.body.string());
-
回调函数:
-
console.show();
-
http.get("www.baidu.com", {}, function(res, err){
-
if(err){
-
console.error(err);
-
return;
-
}
-
log("code = " + res.statusCode);
-
log("html = " + res.body.string());
-
});
-
http.post(url, data, options, callback); // 对地址url进行一次GET请求,data:POST数据,option:加入请求头,callback:回调函数
-
举个例子:
-
var url = "https://login.taobao.com/member/login.jhtml";
-
var username = "你的用户名";
-
var password = "你的密码";
-
var res = http.post(url, {
-
"TPL_username": username,
-
"TPL_password": password
-
});
-
var html = res.body.string();
-
if(html.contains("页面跳转中")){
-
toast("登录成功");
-
}else{
-
toast("登录失败");
-
}
-
http.postJson(url, data, options, callback); // 以JSON格式向目标Url发起POST请求。
-
举个例子:
-
var url = "http://www.tuling123.com/openapi/api";
-
r = http.postJson(url, {
-
key: "65458a5df537443b89b31f1c03202a80",
-
info: "你好啊",
-
userid: "1",
-
});
-
toastLog(r.body.string());
-
http.request(url, options, callback); // 对目标地址url发起一次HTTP请求
-
____待补充
-
Response // HTTP请求的响应。
-
Response.statusCode // 当前响应的HTTP状态码。例如200(OK), 404(Not Found)等。
-
Response.statusMessage // 当前响应的HTTP状态信息。例如"OK", "Bad Request", "Forbidden"。
-
举个例子:
-
var res = http.get("www.baidu.com");
-
if(res.statusCode >= 200 && res.statusCode < 300){
-
toast("页面获取成功!");
-
}else if(res.statusCode == 404){
-
toast("页面没找到哦...");
-
}else{
-
toast("错误: " + res.statusCode + " " + res.statusMessage);
-
}
-
Response.headers // 当前响应的HTTP头部信息。
-
举个例子:
-
console.show();
-
var res = http.get("www.qq.com");
-
console.log("HTTP Headers:")
-
for(var headerName in res.headers){
-
console.log("%s: %s", headerName, res.headers[headerName]);
-
}
-
Response.body // 当前响应的内容
-
Response.request // 当前响应所对应的请求
-
Response.url // 当前响应所对应的请求URL
-
Response.method // 当前响应所对应的HTTP请求的方法。例如"GET", "POST", "PUT"等。
-
找图找色
-
images.requestScreenCapture([landscape]) // 申请截图权限(只需执行一次)
-
举个例子:
-
//请求截图
-
if(!requestScreenCapture()){
-
toast("请求截图失败");
-
exit();
-
}
-
//连续截图10张图片(间隔1秒)并保存到存储卡目录
-
for(var i = 0; i < 10; i++){
-
captureScreen("/sdcard/screen_capture_" + i + ".png");
-
sleep(1000);
-
}
-
images.captureScreen() // 截图当前屏幕返回一个Image对象
-
举个例子:
-
// 请求横屏截图
-
requestScreenCapture(true);
-
// 截图
-
var img = captureScreen();
-
// 获取在点(100, 100)的颜色值
-
var color = images.pixel(img, 100, 100);
-
// 显示该颜色值
-
toast(colors.toString(color));
-
images.captureScreen(path); // path:截图保存路径
-
举个例子:
-
// 请求截图
-
if(!requestScreenCapture()){
-
toast("请求截图失败");
-
exit();
-
}
-
// 截图保存在指定path
-
images.captureScreen("/sdcard/DCIM/新建文件夹/1.png");
-
// 在图片img指定区域中找到颜色和color完全相等的某个点
-
images.findColorEquals(img, color[, x, y, width, height]);
-
举个例子:
-
requestScreenCapture(); //请求截图
-
launchApp("QQ"); // 启动QQ
-
sleep(1200); // 等待1.2秒
-
var p = findColorEquals(captureScreen(), "#f64d30");
-
if(p){
-
toast("有未读消息");
-
}else{
-
toast("没有未读消息");
-
}
-
举个例子:
-
// 请求截图
-
var 获取截图权限 = requestScreenCapture();
-
// console.log("获取截图权限===>", 获取截图权限);
-
// 截图屏幕图片 并放指定位置
-
images.captureScreen("/sdcard/屏幕大图" + ".png");
-
// 扣小图片
-
var 读取图片 = images.read("/sdcard/屏幕大图.png"); // 读取大图
-
var 小心心 = images.clip(读取图片, 923, 828, 109, 115); // 根据大图进行xyz裁剪
-
images.save(小心心, "/sdcard/小心心.png"); // 将图片存储指定位置
-
var 小图片 = images.read("/sdcard/小心心.png"); // 读取小图片
-
// var 是否找到 = images.findImage(读取图片, 小图片); // 根据大图找小图
-
var 是否找到 = images.findImageInRegion(读取图片, 小图片, 921, 830, 116, 113); // 根据区域找图
-
console.log("是否找到===>", 是否找到);
-
auto.waitFor(); // 检查无障碍服务是否已经启用,如果没有启用则跳转到无障碍服务启用界面,并等待无障碍服务启动;
-
click("小红书"); // 点击文本
-
click("啦啦啦", 0); // 点击文本 点击第一个文本
-
longClick("小红书"); // 长按文本
-
longClick("啦啦啦", 0); // 长按文本 点击第一个文本
-
scrollUp(0); // 找到上滑或左滑
-
setText("测试"); // 输入文本 会清除
-
input("测试一下"); // 输入文本 会追加后面
-
var sendButton = text("小红书").findOne().click(); // 定义这个元件 根据文本
-
sendButton.click(); // 元件点击
-
desc("搜索").findOne().click(); // 根据desc进行点击
-
id("action_search").findOne().click(); // 根据id进行点击
-
className("ImageView").depth(10).findOne().click(); // 组合来完成定位
-
click(); // 控件clickable为true,才能使用
-
longClick(); // 控件longClickable属性为true
-
setText(); // 设置文本,用于编辑控件设置文本 id("search_edit_text").findOne().setText("测试");
-
exits(); // 判断控件是否存在
-
waitFor(); // 等待控件出现
-
scrollForward(); // id("music_list").findOne().scrollForward(); 上滑 如果控件scrollForward属性为true
-
scrollBackward(); // id("music_list").findOne().scrollBackward(); 下滑 scrollBackward属性为true
-
举个例子:
-
className("android.widget.EditText").findOne().setText("狐狸");
-
var 搜索 = text("搜索").findOne().click();
-
搜索.click();
-
// 如果控件名以“android.widget.”开头 可以直接省略,例如文本控件可以直接使用
-
className("TextView");
-
常见控件的类名如下:
-
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.findOne(timeout); // 对屏幕上的控件进行搜索,直到屏幕上出现满足条件的一个控件为止
-
举个例子:
-
//启动Auto.js
-
launchApp("Auto.js");
-
//在6秒内找出日志图标的控件
-
var w = id("action_log").findOne(6000);
-
//如果找到控件则点击
-
if(w != null){
-
w.click();
-
}else{
-
//否则提示没有找到
-
toast("没有找到日志图标");
-
}
-
UiSelector.findOnce(i); // 对屏幕上的控件进行搜索,如果找到符合条件的控件则返回该控件 i:索引
-
UiSelector.find(); // 找出所有满足条件的控件并返回一个控件集合
-
举个例子:
-
var c = className("AbsListView").find();
-
if(c.empty()){ // empty() 返回控件集合是否为空
-
toast("找到啦");
-
}else{
-
toast("没找到╭(╯^╰)╮");
-
}
-
UiSelector.untilFind(); // 对屏幕上的控件进行搜索,直到找到至少一个满足条件的控件为止 没找到会一直卡在那儿
-
UiSelector.exists(); // 判断屏幕上是否存在控件
-
举个例子:
-
if(text("某个文本").exists()){
-
//要支持的动作
-
toast("这是某个文本");
-
}
-
UiSelector.waitFor(); // 等待屏幕上出现符合条件的控件
-
举个例子:
-
textContains("退出").waitFor(); // textContains(str) 为当前选择器附加控件"text需要包含字符串str"的筛选条件
-
click("退出");
-
UiSelector.filter(f) // 为当前选择器附加自定义的过滤条件。
-
举个例子:
-
// 要找出屏幕上所有文本长度为10的文本控件的代码为:
-
var uc = className("TextView").filter(function(w){
-
return w.text().length == 10;
-
});
-
UiObject.click(); // 点击该控件 需要控件的clickable为true才可使用
-
UiObject.longClick(); // 长按该控件 需要控件的longClickable为true才可使用
-
UiObject.setText(text); // 设置输入框控件的文本内容 需要控件的editable为true才可使用
-
UiObject.copy(); // 对输入框文本的选中内容进行复制 该函数只能用于输入框控件,并且当前输入框控件有选中的文本
-
举个例子:
-
var et = className("EditText").findOne();
-
//选中前两个字
-
et.setSelection(0, 2); // setSelection() 设置输入框选中的内容
-
//对选中内容进行复制
-
if(et.copy()){
-
toast("复制成功");
-
}else{
-
toast("复制失败");
-
}