本文基于读者熟悉或了解JavaScript
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秒钟 |
sl~eep(mills) | sl~eep(1000) 程序暂停1秒 |
press(x, y, 1); sl~eep(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 为内容 |
setScreenMetrics(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 Function | 功能描述 |
---|---|
id("a").text("abc").findOne().click(); | 选择id属性为a,text属性为abc的控件,找到一个符合条件的控件,对其进行点击 |
desc() | 匹配desc值为传参的控件 |
descContains("cd") | 匹配desc包含指定字符串的控件 |
descStartsWith() | 匹配desc以指定字符串开头的控件 |
descEndsWith() | 匹配desc以指定字符串结尾的控件 |
descMatches() | 用于传入正则表达式,匹配查找对应的控件 |
text() | 匹配text值为传参的控件 |
textContains() | 匹配text包含指定字符串的控件 |
textStartsWith() | 匹配text以指定字符串开头的控件 |
textEndsWith() | 匹配text以指定字符串结尾的控件 |
textMatches() | 用于传入正则表达式,匹配查找对应的控件 |
id() | 匹配id值为传参的控件 |
idContains() | 匹配id包含指定字符串的控件 |
idStartsWith() | 匹配id以指定字符串开头的控件 |
idEndsWith() | 匹配id以指定字符串结尾的控件 |
idMatches() | 用于传入正则表达式,匹配查找对应的控件 |
className | 匹配指定className的控件 |
package | 匹配指定package的控件 |
clickable(true) | 可点击选择器 |
checkable() | 是否可勾选 |
selected() | 是否已选中 |
longClickable() | 是否可长按 |
enabled() | 控件是否已启用 - 选择器 |
scrollable() | 控件是否可滑动 - 选择器 |
editable() | 控件是否可编辑 - 选择器 |
- | - |
bounds(x1, y1, x2, y2) | 控件位置范围,四个整数值组成,前两个值为左上角坐标,后两个值为右下角坐标 |
boundsInside(x1, y1, x2, y2) | 控件位置在指定范围内 |
filter(function(w){return w.text().length==10}) | 过滤出text属性有10个字符的控件 |
findOne() | 寻找屏幕上符合前面控件选择器的函数,返回第一个符合条件的控件,可传入最大查找时间 |
findOnce() | 寻找一次,如果没有符合条件的控件,返回null,可传入参数指定获取第几个符合条件的控件 |
untilFind() | 循环寻找,至少找到一个符合条件的控件才会返回合集 |
find() | 将选择器转换成控件集合 |
4.控件
API Function | 功能描述 |
---|---|
setText() | 输入框内内容:id("edit").findOne().setText("123456"); |
控件.parent() | 获得到这个函数的父控件函数 |
child(第几个) | 获取到他的第几个子控件,注意序号从零开始 |
children() | 用于返回这个控件的所有子控件 |
findByText(str) | 需要传入一段文本字符串,这个函数返回所有子控件或孙控件中text或desc属性中包含这段文字的所有控件 |