Auto.js学习笔记1—基于控件的操作

Release scrcpy v1.16 · Genymobile/scrcpy (github.com)

  • 保存js文件到手机

基于控件的操作

        基于控件的操作指的是选择屏幕上的控件,获取其信息或对其进行操作。对于一般软件而言,基于控件的操作对不同机型有很好的兼容性;但是对于游戏而言,由于游戏界面并不是由控件构成,无法采用本章节的方法,也无法使用本章节的函数。有关游戏脚本的编写,请参考《基于坐标的操作》

        基于控件的操作依赖于无障碍服务,因此最好在脚本开头使用auto()函数来确保无障碍服务已经启用。如果运行到某个需要权限的语句无障碍服务并没有启动,则会抛出异常并跳转到无障碍服务界面。这样对用户体验并不好,因为需要重新运行脚本,后续会加入等待无障碍服务启动并让脚本继续运行的函数

        您也可以在脚本开头使用"auto"表示这个脚本需要开启无障碍服务,但是不推荐这种做法,因为这个标记必须在脚本的最开头(前面不能有注释或其他语句、空格等),我们推荐使用auto()函数来确保无障碍服务已启用

一.auto([mode])

  • mode {string} 模式

检查无障碍服务是否已经启用,如果没有启用则抛出异常并跳转到无障碍服务启用界面;同时设置无障碍模式为mode。mode的可选值为:

  • fast 快速模式。该模式下会启用控件缓存,从而选择器获取屏幕控件更快。对于需要快速的控件操作的脚本可以使用该模式,一般脚本则没有必要使用该函数。
  • normal 正常模式,默认。

如果不加mode参数,则为正常模式。

建议使用auto.waitFor()auto.setMode()代替该函数,因为auto()函数如果无障碍服务未启动会停止脚本;而auto.waitFor()则会在在无障碍服务启动后继续运行。

二.click(text[, i])

  • text {string} 要点击的文本
  • i {number} 如果相同的文本在屏幕中出现多次,则i表示要点击第几个文本,i从0开始计算

返回是否点击成功,当屏幕中并未包含该文本,或者该文本所在区域不能点击时返回false,否则返回true。该函数可以点击大部分包含文字的按钮,例如微信主界面下方的"微信","联系人","发现","我"的按钮等
通常与while同时使用以便点击按钮直至成功,例如:

while(!click("扫一扫"));

当不指定参数 i 时则会尝试点击屏幕上出现的所有文字text并返回是否全部点击成功

i 是从0开始计算的,也就是,click("啦啦啦",0)表示点击屏幕上第一个"啦啦啦",click("啦啦啦", 1)表示点击屏幕上第二个"啦啦啦"

文本所在区域指的是,从文本处向其父视图寻找,直至发现一个可点击的部件为止

click(left, top, bottom, right)

  • left {number} 要点击的长方形区域左边与屏幕左边的像素距离
  • top {number} 要点击的长方形区域上边与屏幕上边的像素距离
  • bottom {number} 要点击的长方形区域下边与屏幕下边的像素距离
  • right {number} 要点击的长方形区域右边与屏幕右边的像素距离

注意,该函数一般只用于录制的脚本中使用,在自己写的代码中使用该函数一般不要使用该函数

点击在指定区域的控件。当屏幕中并未包含与该区域严格匹配的区域,或者该区域不能点击时返回false,否则返回true

有些按钮或者部件是图标而不是文字(例如发送朋友圈的照相机图标以及QQ下方的消息、联系人、动态图标等),这时不能通过click(text, i)来点击,可以通过描述图标所在的区域来点击。left,bottom,top,right描述的就是点击的区域

至于要定位点击的区域,可以在悬浮窗使用布局分析工具查看控件的bounds属性。通过无障碍服务录制脚本会生成该语句

三.longClick(text[, i]))

  • text {string} 要长按的文本
  • i {number} 如果相同的文本在屏幕中出现多次,则 i 表示要长按第几个文本,i从0开始计算

返回是否点击成功。当屏幕中并未包含该文本,或者该文本所在区域不能点击时返回false,否则返回true

当不指定参数i时则会尝试点击屏幕上出现的所有文字text并返回是否全部长按成功

四.scrollUp( [i] )

  • i {number} 要滑动的控件序号

找到第 i+1 个可滑动控件上滑或左滑。返回是否操作成功。屏幕上没有可滑动的控件时返回false

另外不加参数时 scrollUp() 会寻找面积最大的可滑动的控件上滑或左滑,例如微信消息列表等

参数为一个整数 i 时会找到第 i+1 个可滑动控件滑动,例如 scrollUp(0) 为滑动第一个可滑动控件

launchApp("微信")
click("发现")
click("朋友圈")
scrollUp()
  • 0
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小馒头爱学Java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值