AutoJS一文精通AutoJS脚本教程详解_autojs教程_Cupster的博客-程序员宅基地

技术标签: Web  深山磨柴斧  autojs  Android脚本  Android  

本文基于读者熟悉或了解JavaScript


1.基础

  • 屏幕坐标系,屏幕左上角为原点(0,0),向右为x轴正向,向下为y轴正向
  • 单位为px
  • 其他大部语法与JS相似或一致

2.常用api

函数 功能
click(x,y) click(500,500) 点击屏幕x=500px,y=500px的点
press(x,y,mills) press(200,200,1000) 按住(200,200)1秒钟
sleep(mills) sleep(1000) 程序暂停1秒
press(x,y,1);
sleep(50);
press(x,y,1)
双击
swipe(x1,x2,y1,y2,t) swipe(100,300,600,900,1000);
从A点(100,300)滑动到B点(600,900)耗时设置1秒
auto.waitFor() 等待申请无障碍权限,一般用于脚本开头
Tap(x,y) 与click(x,y)一样,Android7.0以下使用,且需要root
Swipe(x1,x2,y1,y2,t) 与swipe(x1,y1,x2,y2,t)一样,Android7.0以下使用,且需要root
console.verbose 灰色日志
console.info 绿色日志
console.warn 蓝色日志
console.error 红色日志
toast(str) 气泡提示 ,str为内容
serScreenMetrics(width,height) 设置脚本运行屏幕的宽高
宽不一致,会自动缩放运行的坐标值
var w = device.height 获取屏幕高度px
var w = device.width 获取屏幕宽度px
console.show(); 显示控制台
console.hide(); 隐藏控制台
console.rawInput(); 等待控制台输入内容、并等待点击确定
dialog.confirm(title ,content) 弹出确认框,点击确定返回true,点击取消返回false
engines.execScriptFile(path) 启动path对应的脚本
可用相对路径:./xx.js同目录的脚本
engines.stopAll() 停止所有脚本,包括自身
exit() 停止当前脚本
app.launchApp(appName) 通过APP名启动app
app.launchApp(pkgName) 通过包名启动app
app.uninstall(pkgName) 通过包名卸载app
app.openUrl(url) 打开浏览器,并打开指定url
back() 返回键功能
home() home键功能
random(min ,max) 返回随机数[min ,max]
toastLog(message) toast(str)和log(str)的合并
device.vibrate(mills) device.vibrate(1000)手机震动1秒
device.keepScreenOn(mill) 让手机保持常亮,不设置时间则为常亮,设置时间,即为指定常亮时间
setClip(text) 设置剪贴板内容
getClip() 获取粘贴板的内容
setInterval(function(){} , mills) 设置指定间隔时间,的循环体

3.原生控件有关api

在auto.js软件中有直接获取到控件信息的功能,在auto.js软件主页面,点击右上角,打开侧拉菜单,大致中间位置的悬浮窗打开。这个auto.js的悬浮窗就含有获取控件信息的功能。点击悬浮窗我们可以看到有5个功能,中间蓝色的就是用于查看控件信息的功能,点击之后,会让你选择用布局范围分析和布局层次分析

比较主要的控件信息有id即控件的id属性,text控件的文本属性,bounds控件的边框位置,desc控件的desc值,有些控件会把text控件放空,并把上面的文本写入desc值。clickable/longClickable控件是否可以点击/长按,如果控件的clickable为false那么点击也没用。checked控件是否选中,depth在第几层次,indexInParent在父控件中是第几个.

api 功能
id(“a”).text(“abc”).findOne().click(); 选择id属性为a的,text属性为abc的控件,直到找到一个符合以上条件的控件,对其点击。
desc() 匹配desc值为传参的控件
descContains(“cd”)
descStartsWith()
descEndsWith()
descMatches() 用于传入正则表达式 匹配查找对应的控件
text()
textContains()
textStartsWith()
textEndsWith()
textMatches()
id()
idContains()
idStartsWith()
idEndsWith()
idMatches()
className
package
clickable(true) 可点击选择器
checkable() 是否可勾选
selected() 是否已选中
longClickable() 是否可长按
enabled() 控件是否已启用 - 选择器
scrollable() 选择器:控件是否可滑动
editable() 选择器:控件是否可编辑
- -
bounds(x1,y1,x2,y2) 控件位置范围 ,四个整数值组成前两个值为控件长方形左上角的坐标,后两个值是控件右下角点的坐标
boundsInside(x1,y1,x2,y2) boundsInside(233,233,666,666)
filter(function(w){return w.text().length==10}) 过滤出text属性有10个字符的控件
findOne() 寻找屏幕上符合前面控件选择器的函数,直到出现,并返回第一个出现的控件,另外他还可以传入一个参数—最大查找时间,即位,如果到了时间还没有找到的话,直接返回undifined,以继续脚本
findOnce() 函数只会寻找一次,如果当前屏幕上没有,则直接返回null,他也可以传入一个参数,用于写,需要获取当前屏幕上第几个符合条件的内容,如果当前屏幕上的个数,不够获取的个数,则返回null
untilFind() 他会循环寻找,至少要找到一个才会返回合集
find() 选择器转换成合集

4.控件

api 功能
setText() 输入框内内容:id(“edit”).findOne().setText(“123456”);
控件.parent() 获得到这个函数的父控件函数
child(第几个) 获取到他的第几个子控件,注意序号从零开
children() 用于返回这个控件的所有子控件
findByText(str) 需要传入一段文<字符串>,这个函数返回他所有子控件或者孙控件中text或者desc属性中包含这段文字的所有控件
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Cupster/article/details/115751897

智能推荐

将pdf转成tif格式(亲测可用)_r代码 pdf 转tif-程序员宅基地

import java.awt.image.BufferedImage;import java.io.FileOutputStream;import java.io.OutputStream;import java.util.HashMap;import java.util.Map;import org.icepdf.core.pobjects.Document;i..._r代码 pdf 转tif

解决页面滚动高度一直为0_bx-viewport 滚动height变0-程序员宅基地

工作中要获取页面滚动高度,用的document.documentElement.scrollTop,但是一直为0,查阅资料后发现let top = document.documentElement.scrollTop || document.body.scrollTop;..._bx-viewport 滚动height变0

h5点击跳转到去关注公众号_点击关注我们公众号-程序员宅基地

承接微信小程序开发,网页开发,微信 13977284413实现方案:登录你的微信公众号,在首页右键- 查看网页源代码找到类似代码:(纯数字处是你微信号唯一id) window.wx.uin = "2394001060" || "0";其中这个纯数字:2394001060, 应该就是你的唯一标识ID。代码可能会有所更新,但是类似叫uin 的且纯数字的差不多就..._点击关注我们公众号

jetson AGX Xavier配置python环境_jetson agx xavier 安装python 3.10-程序员宅基地

jetson AGX Xavieranaconda环境pycharm使用python虚拟环境的管理1.archicondaARM架构只能用archiconda,安装请参考:Xavier安装Archiconda2.python虚拟环境管理1)archiconda2)python环境管理参考:附加:系统软件源头## website to referhttps://www.cnblogs.com/yongy1030/p/10315569.html##中科大源deb ht._jetson agx xavier 安装python 3.10

数据库面试题:视图是什么?有什么用?_我是方小磊的博客-程序员宅基地

文章目录1. 视图概念2. 视图的作用1. 提高重用性2. 便于数据库重构3. 提高安全性4.数据更清晰1. 视图概念在MYSQL中,视图是一个命名的虚表,它由一个SQL查询来定义,可以当做表使用。与持久表不同的是,视图中的数据没有实际的物理存储但是在MYSQL中,用户可以对某些视图进行更新操作,就是可以通过视图的定义来更新基本表,但是这种可以进行更新操作的视图被称为可更新视图(updatable view)。 这种视图是在定义的时候需要添加 WITH CHECK OPTION总的来说,可以看

连接oracle数据库的几种方法_连接oracle数据库的方式-程序员宅基地

Oracle数据库的远程连接可以通过多种方式来实现,本文我们主要介绍四种远程连接的方法和注意事项,并通过示例来说明,接下来我们就开始介绍。第一种情况:若oracle服务器装在本机上,那就不多说了,连接只是用户名和密码的问题了。不过要注意环境变量%ORACLE_HOME%/network/admin/是否设置。第二种情况:本机未安装oracle服务器,也未安装orac_连接oracle数据库的方式

随便推点

RecylerView布局管理器LayoutManager(详解)_recyclerview.setlayoutmanager_撩得Android一次心动的博客-程序员宅基地

设置布局管理器方法,实现RecylerView布局里面的内容显示方式;recyclerView.setLayoutManager(LayoutManager layoutManager)使用三个类LinearLayoutManager:线性布局管理器 StaggeredGridLayoutManager: 错列网格布局管理器 GridLayoutManager:网格布局管理器一、LayoutMananger子类LinearLayoutManager一般使用LinearLayou_recyclerview.setlayoutmanager

Python版本的管理 - Pyenv使用-程序员宅基地

pyenv:管理 Python 本身的多个版本;pyenv-virtualenv:管理不同版本 Python 的虚拟环境;linux安装1. 首先安装所需依赖,在Ubuntu/Debian/Mint(Debian系)上:sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev \libbz2-dev libreadline-dev libsqlite3-dev wget cu.

广告点击率预测_python kaggle预测点击率-程序员宅基地

广告点击率预测项目,目的是通过广告和用户信息预测一个广告是否被点击。数据来自Kaggle竞赛(https://www.kaggle.com/c/avazu-ctr-prediction),源数据比较大,选取前40000条。1. 数据读取和分析import numpy as npimport pandas as pdimport matplotlib.pyplot as plt#数据读取data_df = pd.read_csv('train_subset.csv')#展示头部数据,分_python kaggle预测点击率

WhaleCTF 隐写之彩虹的声音-程序员宅基地

WhaleCTF 隐写之彩虹的声音下载的文件打开发现是音频文件,问了大佬音频文件处理的方法。直接用audacity打开看频谱图,这题就是这样没了。。。。音频文件还有思路这边我还看到一篇文章:https://www.sqlsec.com/2018/01/ctfwav.html...

流行病模型(SIR Model)-程序员宅基地

流行病模型(SIR Model)by : ZhuoFei, Zhou首先定义一个函数bernoulli(p)#以概率p判断是否会被感染或恢复function bernoulli(p::Number) if rand(1)[1] < p return true else return false endendbernoulli (generic function with 1 method)恢复所需的时间函数recovery_time(p)function recove_sir model

Self Summary: C++函数返回引用和指针的问题,局部对象与new对象的问题_c++函数返回局部对象-程序员宅基地

C++的局部对象的概念:作用域在局部范围内(例如函数)的对象。这样的对象可以把对象的引用或者指针存在栈中,随着函数的结束而销毁,而把创建的对象内容存在堆中。如果需要在堆上创建对象,要么使用new运算符,要么使用malloc系列函数。而关键是理解好“自动存储”的概念[1]:Object obj;此时,obj是在栈上分配的吗?要回答这个问题,我们首先要理解这个语_c++函数返回局部对象