auto.js基础笔记

基础知识

控件(Widget)的概念类似于DOM中的元素对象
手机屏幕上显示的整个页面就是由很多不同的控件组成的
常见的控件:
TextView==> 显示文字(“android.widget.TextView”)
ImageView ==> 显示图片(“android.widget.ImageView”)
EditText ==> 输入框
Button ==> 按钮,可附带图片
CheckBox ==> 复选框
每个控件有其属性,例如:
className 类名,表示控件类型(“android.widget.TextView”\等)
packageName 包名,表示控件所在的应用包(“com.tencent.mobileqq”)
clickable 控件是否可点击
editable 控件是否可编辑
longClickable 控件是否可长按
bounds 控件在屏幕上的范围,当控件无法点击,用这个属性获取坐标
checkable 控件是否可勾选
checked 控件是否可已勾选
scrollable 控件是否可滑动
selected 控件是否已选择
visibleToUser 控件是否可见
enabled 控件是否已启用
depth 控件的布局深度
drawingOrder 控件在父控件的绘制顺序。
indexInParent 控件在父控件的位置
使用Auto.js软件,在悬浮窗的“布局范围分析”中可以选择屏幕上的控件,并查看其各项属性的值

常用函数

sleep(n)==> 暂停运行n毫秒,常见的情况是,软件的运行速度“跟不上”脚本,因此需要一定时间的等待(尤其是需要点击的控件以滑动的方式进入,若不等待可能点击不到)
toast(message)==> 显示气泡信息
log(message)==> 在控制台中输出信息
toastLog(message)==> 上面两个函数的合体
exit()==> 立即停止脚本运行
currentPackage()==> 是当前正在运行的应用的包名
waitForPackage(package[, period = 200])==> 等待指定的应用出现,period 轮询等待间隔(毫秒)
currentActivity()==> 当前正在运行的Activity的名称
waitForActivity(activity[, period = 200])==> 等待指定的Activity出现
waitFor()==> 等待某物出现
例如,代码第一句一般为auto.waitFor(),检查无障碍服务是否已经启用,如果没有启用则跳转到无障碍界面,并等待无障碍服务启动
又例如,要等待某个文本为“发送”的控件出现,代码为text(“发送”).waitFor();
exists()判断当前屏幕上是否存在某控件,如if(text(“发送”).exists())…


找控件的方法

text(“文字”) ==> 找“文字” 控件
textContains(“文字”) ==> 找包含”文字”的控件
textStartWith(“文字”) ==> 找”文字”开头的控件
textEndsWith(“文字”) ==> 找”文字” 结尾的控件

findOne() ==> 返回值是控件,如果找不到,会阻塞运行。
findOne(timeOut) ==> 他在规定时间范围内找不到返回值,会返回null,找到的返回值也是控件, 不会阻塞运行

findOnce() ==> 就找一次,返回值是控件,找不到返回null
findOnce(i) ==> 找第i+1个 返回值是控件,找不到返回null

find() ==> 找到所有符合条件的控件 都返回过来, 找不到会返回一个空集合,不会阻塞运行
untilfind() ==> 直到找到为止 会阻塞运行


点击方法

click() ==> 这个会有150ms的延迟。
调用:click(x,y) 或者 控件.click()这个clickable必须是true
当clickable是false时,要利用找控件的bounds中心点坐标的方法,然后利用click(x,y)来解决
找中心点坐标的方法:
x= 控件.bounds().centerX()
y= 控件.bounds().centerY()

press(x,y,1) ==> 感觉这个比较快,1代表毫秒数


基于控件的操作

获取包名打开app
launchApp(“软件名”) 打开app
如果没有任何反应,就是设置问题 ,要到设置里边给auto软件打开后台弹出界面的权限
通过包名获取软件名的方法:getAppName(“包名”)

launchPackage(“包名”)
通过软件名获取包名的方法:getPackageName(“软件名”)

进入app等待
进入要判断是否进入了App,用:
waitFor() ==>等待 , 也会阻塞软件
exists() ==> 存在 这不是阻塞的,用的时候注意时间间隔

随机数:
random(10,20)
随机延时1-2秒:
sleep(random(1000,2000))

剪切板,设置文字
setClip(“剪切板中的文字”)
getClip() ==> 他的返回值就是剪切板中的内容
setText(0,“想加入的文字”) ==> 0代表索引,查找第一个输入框,给他加入文字,不带索引代表全部加入文字
input(“保持原来的不变,追加的文字”)

滑动
swipe(600,1634,600,521,200) ==> 前四个参数是坐标点,俩个坐标确定一个点,后边是滑动时间
gesture(200,[600,1634],[600,521]) ==> 第一个是滑动时间,后边是坐标


全局

 

赞 (1)