Auto.js 注意事项


前言

最近心血来潮想弄一个安卓脚本,搜索几番,发现了autojs,Android7.0以上大部分功能可以免root(只需要开始无障碍服务)实现。
在此,记录一些关键点。


一、查找控件

  • 查找控件时 加上className("")筛选条件成功率更高
  • 默认的find()查找范围 我目前还不清楚。在一个很长的滑动页面中,经常会找到当前页面没有的控件,但是却点击不了,所以可以通过UiSelector.bounds(left, top, right, buttom)swipe(x1, y1, x2, y2, duration) 配合使用达到精准定位。
    ###指定范围 查找控件,然后下滑 该范围的高度,循环往复。
  • 一个LIstView中的子控件的坐标不会因为滑动而产生变化,但是在View中的子控件坐标是变化的。ListView是按照一个很长的列表窗体固定坐标的,而不是看上去的滑动窗体。
    ### 当要点击很长的一个LIstView中的子控件时,尽量使用获取ListView中可点击且能达到目的的子控件,然后调用Uiobject.click() 的方式 进行点击。
    不要使用滑动加获取子控件坐标,然后click(x,y) 的方式

二、等待相应

  • 当页面转换时,一般使用sleep(n*1000)来等待新页面刷新完成,但是碰到网络卡顿的情况,使用sleep(10*1000)又过于浪费时间,可以提前找到一个刷新前没有并且仅当刷新完成后才出现的控件,使用findOne() 来查找它,利用findOne()查找组件时阻塞的特性,界面更流畅

三、遍历控件

  • 场景简述 下面的几个动态是在一个List中的,如何遍历点击他们,完成点赞、评论操作?
  • 某app社区动态
  • 想法 首先想到的是找到这个LIst然后0-长度 遍历执行,
let List = defaultView.parent()
for (let index = 1; index < List.childCount(); index++) {
    sleep(1000)
    List.child(index).click()
    //执行点赞,评论操作
    //。。。。。。。。
    
    sleep(1000)
    back()
}

但是经实践上面方法不可行,第一个控件可以点击,但是第二个开始就会失败(没怎么学过安卓,不太懂,可能是刷新导致的)。

  • 解决 提前准备for循环次数,每次点击完毕后都要重新查找,实测可行。
var List = defaultView.parent()
for (let index = 1; index < List.childCount(); index++) {
    sleep(1000)
    //重新查找
    let List = defaultView.parent()
    List.child(index).click()
    //执行点赞,评论操作
    //。。。。。。。。
    
    sleep(1000)
    back()
}`

总结

继续更新中…………

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Auto.js 是一种轻量级的 JavaScript 脚本语言,常用于自动化 Android 和 iOS 设备的操作,比如模拟按键、屏幕操作等。在处理网页或应用中的广告时,通常可以通过模拟用户交互(如点击、滚动)或者利用特定的广告检测 API 来实现自动跳过。 以下是一个基本的思路: 1. **定位广告区域**: 首先,你需要识别广告元素,这可能依赖于广告的常见特征,如特定的类名、ID或CSS选择器。 ```javascript var adElement = document.querySelector('.ad-class-name'); // 用实际的类名替换 ``` 2. **触发广告关闭按钮**: 找到并模拟点击广告的关闭按钮或“跳过”按钮。 ```javascript if (adElement) { adElement.click(); } ``` 3. **延时操作**: 有时候广告会有一定的加载时间或者等待用户确认的环节,这时你可以加入适当的延迟。 ```javascript sleep(2000); // 假设2秒后广告可能会消失 ``` 4. **循环检查广告状态**: 使用 `setInterval` 检查广告是否已经关闭,直到广告完全消失。 ```javascript setInterval(function() { if (!document.querySelector('.ad-class-name')) { console.log('Ad skipped successfully'); clearInterval(intervalId); } }, 1000); ``` **注意事项**: - 不同的应用和网页结构可能会有所不同,上述代码仅作参考,实际操作中可能需要针对具体情况进行调整。 - 有些广告可能使用了防自动化技术,直接点击可能会被检测到,这时可能需要更复杂的策略,如使用机器学习算法识别动态元素。 **相关问题--:** 1. Auto.js 中如何识别页面元素? 2. 如何处理动态加载的广告? 3. 如何防止广告拦截工具影响自动化脚本?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值