autojs简单案例常⽤控件汇总
⼀、介绍:
1.Auto.js是⼀款安卓应⽤,针对安卓7.0以上机型,它可以⽆需root执⾏脚本。主要是运⽤系统⾃带的“⽆障碍服务”来获取页⾯的,这是个亮点,但有个缺陷就是每次关闭 Auto.js 这个app后都要重新开启“⽆障碍服务”,颇为繁琐。
2.Auto.js可以打包成apk直接装到⼿机
3.Auto.js可以查看页⾯布局,需要打开悬浮窗权限
⼆、简单案例:
1.快⼿刷⾦币
//判断当前页⾯是否有指定text
if (text("发现").exists() || text("同城").exists()){
log('在设置页⾯—记录log')//可在⼿机的log中打印
sleep(500);
swipe(500,1800,500,300,200);//上滑屏幕
}
else{
toast('不在刷视频页⾯_刷不到⾦币');
}
2.华为辅助安装处理&oppo⼿机安装处理
////____________________________华为⼿机安装处理_______________________________
auto();
var i=0
if(text("继续安装").exists()){
log('111111*********')
sleep(2000)
click(760,1650);//坐标点击
sleep(6000)
if (text("去华为应⽤市场查").exists()){
sleep(2000)
click(530,1567);//坐标点击
sleep(4000)
}
if(text("安装成功").exists()){
toast('安装成功');
click(788,1730);//坐标点击
}
}
else{
log('没有应⽤安装弹框');
}
////_____________________________oppo⼿机安装处理_______________________________
auto();
if(text("继续安装").exists()){
log('111111*********');
setText("123456");
textContains("确定").find().click();
sleep(5000);
if (text("安装").exists()){
sleep(2000)
textContains("安装").find().click();
sleep(4000)
textContains("完成").find().click();
}
}
else{
<('没有应⽤安装弹框_安装出错');
}
3.元素判断&js循环语法
/////================================================================判断页⾯元素=================================================================== ////------------------查询⽅式⼀(需求完全匹配)-----------------------------------------
if (text("忘记").exists()){
log('在设置页⾯—记录log')//可在⼿机的log中打印
toast('显⽰弹框');
正则匹配公司名称}
//--------------------查询⽅式⼆--------------------------------------
var btnClose = className("android.widget.TextView").text("⼩红绳").findOne(500);//findOne(500)查500毫秒超时
if (btnClose){
toast('1111111111111111111111');
}
////--------------------查询⽅式三--------------------------------------
if(desc("连信").exists()){
toast('显⽰弹框');
}
else{
toast('没有连信');
}
//---------------当前页⾯不包含'⼩红',执⾏循环体--------------------------
if (!textEndsWith("⼩红").exists()){
toast('显⽰弹框');
}
////-----------------------------正则匹配--------------------------------
//匹配以‘同意’开头的字符串,若3秒内没有查询到则失败。
if (textStartsWith("同意").findOne(3000)){
// 匹配以⼿机结尾的元素textEndsWith("⼿机")
//匹配页⾯包含⼿机的元素textContains("⼿机")
toastLog('匹配成功');
sleep(2000)
}
else{
toastLog('没有到');
}
////-----------判断当前页⾯是否包含连信,有就启动---------------------------
if(desc("连信").exists()){
toast('显⽰弹框');
app.launchApp("连信");
sleep(3000);
}
else{
toast('没有连信');
}
////_______________________________________两个字符串⽐较______________________________
function judge_include_str(str, sub_str) {
//判断两个字符串是否相等,相等为0,不相等为-1
if (("".equals(str)) || ("".equals(sub_str))) {
return true;
}
else {
var ret = str.indexOf(sub_str, false)
return ret;
}
}
aa=judge_include_str('chenwei', 'chenwei');
log(aa);
////_______________________在指定时间内查询元素,超时就失败_______________________________________
if (text("帐号登录").findOne(5000)){
log('到元素—记录log')//可在⼿机的log中打印
toast('显⽰弹框');
}
else{
log('没有到元素')
}
////_______________________________________获取元素的内容________________________________
function screen_content(){
var fas = "";
//按元素id查,,可以为className、desc等
var fsfan = id("phone_number_edit").find();
for(var i = 0; i < fsfan.length; i++){
var ftxt = fsfan[i].text();
if(ftxt != ""){
toast('符合条件');
if(fas == ""){
fas = ftxt;
console.log(fas)
}else{
fas = fas +"_-_"+ ftxt;
console.log(fas)
}
}
}
}
screen_content();
/////======================================================循环============================================================================= ////-----------------------------------------for循环----------------------------------------
for(var i=1;i<4;i++){
sleep(3000)
toast('toast弹框信息');
}
////-------------------------------------------while循环------------------------------------
var num = 1;//1、声明循环变量
while (num<=10){//2、判断循环条件;
document.write(num+"<br />");//3、执⾏循环体操作;
num++;//4、更新循环变量;
}
////------------------------------------------for和if----------------------------------------
for(var i = 1; i < 10; i++){
if(i == 4){
break;
}
console.log(i);//1 2 3
}
4.app应⽤名和包名
// 使⽤应⽤名称,获取应⽤的包名.
var PackageName; //声明变量
PackageName=getPackageName("QQ");
log(PackageName);
//使⽤包名,获取应⽤名称.
var AppName;
AppName = getAppName("bileqq");
log(AppName);
5.设备截图
////______________________设备截图_______________________________________________
////设置⽆障碍模式 fast为启⽤缓存
auto();
////⽅式⼀
test_img();
function test_img(){
// 1、开启线程(因为线程是异步的)⾃动点击⽴即开始,并且触发事件(只需要执⾏⼀次就可以)
threads.start(function () {
var beginBtn;
if (beginBtn = classNameContains("Button").textContains("⽴即开始").findOne(2000)) {
beginBtn.click();
}
});
// 2、请求截图权限(弹框出现,可以省略第⼀步但需要⼿动点击“⽴即开始”)
if(!requestScreenCapture()){
toast("请求截图失败");
exit();
}
//3、进⾏截图
sleep(1700);//等待⼀会保证弹框关闭了
captureScreen("/sdcard/img.png");
}
////⽅式⼆
//1.请求截图权限
if(!requestScreenCapture()){
toast("请求截图失败");
exit();
}
//2、进⾏截图
captureScreen("/sdcard/img.png");
/
///⽅式三:
requestScreenCapture(false);//请求截图
var im = captureScreen();//截图
var path = "/sdcard/screenshot.png";
//保存图⽚
im.saveTo(path);
toast("保存图⽚");//tosat提⽰
//把图⽚加⼊相册中
app.sendBroadcast(
new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, android.Uri.fromFile(new java.io.File(path)))
);
/
/⽅式⼀可以全部⾃动截图,,⽅式⼆需要先记住勾选,如果autojs清除缓存了就需要重新勾选了,,⽅式三全⾃动截图切复制到相册中
6.获取设备信息&设备操作
////______________________设备获取&设备操作_______________________________________________
////设置⽆障碍模式 fast为启⽤缓存
auto();
a = device.height; //⾼度
b = device.width; //宽度
console.log('设备分辨率:'+b+'*'+a);
brand = device.brand; //品牌⼚商
console.log(brand);
model = del; // 设备型号
console.log(model);
product = device.product; // ⼿机型号名称
console.log(product);
//硬件序列号
serial = device.serial; // c3ba6d87a0d71433
console.log(serial);
//安卓系统API版本
sdkint = device.sdkInt; //API版本:25
console.log('API'+sdkint);
//系统版本号
release = lease; //7.1.2
console.log(release);
//安卓id
getandroidid = AndroidId(); //71433c3ba6d87a0d
console.log(getandroidid);
//MAC地址需要联⽹才能获取
getmacaddress = MacAddress(); //B0:FC:36:12:C9:EF
console.log(getmacaddress);
//获取媒体⾳量
getmusicvolume = MusicVolume();
console.log('⾳量'+getmusicvolume); //⾳量:⼤⼩
//获取电量百分⽐
getbattery = Battery(); //87
console.log(getbattery);
//确认设备是否在充电
ischarging = device.isCharging();
console.log(ischarging); //flase 没有在充电
//获取设备运⾏内存容量(占⽤的内存)
gettotalmem = TotalMem();
console.log(gettotalmem); //3186032640 单位(字节),可以⾃⼰转换
//获取设备当前可⽤内存
getavailmem = AvailMem();
console.log(getavailmem); //2386280448(字节),可以⾃⼰转换
/
/查看屏幕是否亮着
isscreenon = device.isScreenOn();
console.log(isscreenon); //true
//唤醒设备 (如果息屏可以点亮屏幕,亮屏就依然亮屏)
device.wakeUp();
//保持点亮屏幕(设置时间)
device.keepScreenOn(30000); //不加参数常亮, ⼿机亮屏时间以device.keepScreenOn为准,之前系统设置的时间作废//保持屏幕常亮可调节省电模式
device.keepScreenDim(timeout);
//取消设备保持唤醒状态⽤来取消屏幕的唤醒状态
device.cancelKeepingAwake();
////使设备震动⼀段时间
device.vibrate(300); //单位毫秒
//取消震动
device.cancelVibration();
7.模拟按键
////______________________按键模拟_物理按键的全局函数_______________________________________________ ////设置⽆障碍模式 fast为启⽤缓存
auto();
//以上函数都可以放在toast()或log()⾥, 例如:toast(notifications());
back();//返回,返回是否执⾏成功
home();//回到桌⾯,返回是否执⾏成功
powerDialog();//弹出电源键菜单。返回是否执⾏成功
notifications();//拉出通知栏。返回是否执⾏成功
quickSettings()//下拉通知栏到底。返回是否执⾏成功
recents();//显⽰最近任务。返回是否执⾏成功
8.
////__________________________________多线程_____________________________________
//定义⼦线程
var thread = threads.start(function(){
while(true){
sleep(200);
log("⼦线程");
}
});
/
/这⾥是主线程
sleep(2000);
log('准备停⽌主线程了')
if (20>10){
sleep(1000);
//停⽌线程执⾏
thread.interrupt();
}
////_________________________⼦线程主动退出____________________________________________
var thread = threads.start(function(){
var i=0
while(i<10){
sleep(200);
log("⼦线程");
if (i>5){
log("⼦线程i>5");
threads.shutDownAll()
}
i=i+1
}
});
//这⾥是主线程
sleep(2000);
log('准备停⽌主线程了')
if (20>10){
sleep(1000);
log('主线程.....')
}
log('主线程...end')
////______________________________堵塞主线程、等待⼦线程完成____________________________________
var sum = 0;
//启动⼦线程计算1加到10000
var thread = threads.start(function(){
log('⼦线程开始')
for(var i = 0; i < 10000; i++){
sum += i;
}
});
log('主线程开始')
//等待⼦线程完成(堵塞)
thread.join();
toast("sum = " + sum);
9.获取包名
//_____________________________shell封装_获取⼿机包名、并转成list___________________________________
auto();
function get_package() {
log('开始启动了');
var result = shell("pm list package -3");
//log(result);//原始第三⽅包
var str = JSON.stringify(result);//数据类型转换
var str1 = str.match(/package:(\S*)package/)[1];//正则匹配
str_chen = place(/\\n/g, ",");//替换\n为逗号
basic = str_chen.substr(0, str_chen.length - 1); //删除字符串最后⼀位
str_page = place(/package:/g, "");//替换\n为逗号
var page_list = str_page.split(',');//字符串转list(以逗号分割)
log(page_list);
}
// get_package()
//________________________shell常⽤操作(可以封装成函数)_____________________________________________________________ //获取包名
var result = shell("pm list package -3");
console.log('第三⽅包名:'+result);
//获取品牌
var brand = shell("getprop ro.product.brand");
console.log('查看⼿机品牌:'+brand);
//清空应⽤数据
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论