注册时间
最后登录
新帖
发布在 BUG与问题反馈 阅读更多

在我的老手机上,版本4.0.4也遇到这中情况,java.lang.NoClassDefFoundError:java/util/stream/Stream

当我安装4.0.0就ok了。

发布在 脚本发布 阅读更多

试了楼主的趣头条,貌似是通过不断的刷新页面,然后点击屏幕相同的位置载入新闻。当我遇到图集时,浏览不正常。
然后借鉴改良了一下,为求稳定性避免网络延迟带来的意外,sleep加得略长。所以效率方面暂时没有好的解决方案。
只用到一个id,仅当播放视频无法退出时,需要暂停任意视频,查中间“播放”按钮的 id("axg")

auto.waitFor();
var w = device.width,
    h = device.height;
if (currentPackage() == "com.jifen.qukan") {
    toast("趣头条");
} else {
    toast("什么也不做,请打开趣头条,然后重试!");
    exit();
}
//右下角有×表示无广告
var 无广告 = boundsInside(w * 0.85, h * 0.15, w, h).className("android.widget.ImageView").clickable(true).findOne().id();
for (var i = 0; i < 100; i++) {
    quDo(无广告);
}
function quDo(notAD) {
    var target = className("android.support.v7.widget.RecyclerView").findOne();
    target.children().forEach(child => {
        if (child.findOne(id(notAD)) != null) {
            child.click();
            sleep(6000);
            //是否视频
            if (className("baiduvr.ag").exists()) {
                //个别视频末尾无广告,这时会有一个重播按钮id,当它们出现时,播放完毕
                while (!(className("android.widget.TextView").text("关闭广告").exists()
                || id("axg").exists())) {
                    sleep(500);
                }
                sleep(1000);
            } else {
                //注意:这里scrollForward()在我的手机上表现完美。但在朋友的vivo X21上,翻到底部不会结束,解决方案是比如翻页10次用break退出while循环。
                //缺点:这种翻页方式金币圆圈有时会停止。我是为了方便对付有图集的页面。朋友们可以改成swipe方式翻页,只需注意区分图集即可。
                while (scrollable().findOne().scrollForward()) {
                    sleep(6000);
                }
            }
            back();
            sleep(3000);
        }
    });
    target.scrollForward();
    sleep(1000);
    //多翻半页,实现上拉加载,同时尽量避免阅读到相同的新闻
    swipe(w / 2, h / 2, w / 2, 0, 1000);
    sleep(3000);
}
发布在 一般交流 阅读更多

下面示例拷贝自Auto.js文档:
一个循环找色的例子如下:

//向系统申请屏幕截图权限
requestScreenCapture();

//循环找色,找到红色(#ff0000)时停止并报告坐标
while(true){
    var img = captureScreen();
    var point = findColor(img, "#ff0000");
    if(point){
        toast("找到红色,坐标为(" + point.x + ", " + point.y + ")");
    }
}

其实,我也没搞懂它在找到红色后怎么会停下来。

第二个例子应该是你想要的,说明也挺详细:
一个区域找色的例子如下:

//读取本地图片/sdcard/1.png
var img = images.read("/sdcard/1.png");
//判断图片是否加载成功
if(!img){
    toast("没有该图片");
    exit();
}
//在该图片中找色,指定找色区域为在位置(400, 500)的宽为300长为200的区域,指定找色临界值为4
var point = findColor(img, "#00ff00", {
     region: [400, 500, 300, 200],
     threshold: 4
 });
if(point){
    toast("找到啦:" + point);
}else{
    toast("没找到");
}
发布在 一般交流 阅读更多

因为子线程中的while是死循环,所以一直滑动,
也许应该交换一下位置,把滑动放在主线程中,把判断放在子线程中:

var find = threads.start(function(){
//这里find某某,或等待10秒
sleep(10000);
});
//等待子线程启动,因为子线程未开始也会判定为false
find.waitFor();
//子线程结束返回false,循环结束
while(find.isAlive()){
Swipe(520,1500,520,300);
sleep(1000);
}

发布在 BUG与问题反馈 阅读更多

写了如下的循环,目的是翻页到底部,然后返回,见代码:

//找到一个可以滚动的控件
var gun = scrollable(true).findOne();
//开始滚屏,直到返回false
while (gun.scrollForward()) {
sleep(2000);
}
//后退(返回)

back();

好,这个循环在我的手机上完全ok,可是,拷贝到朋友的vivo x21上面,while变成了死循环。到不了back(),怎么办?

发布在 BUG与问题反馈 阅读更多

1、进入手机的后台管理,比如长按中间键(圆圈或房子)。
给auto.JS加锁。

2、如果有类似手机管家一样的软件,在里面把Auto设置为信任的。


与 Auto.js 的连接断开,我们正在尝试重连,请耐心等待