百度极速版APP 自动脚本 javascript代码

使用JavaScript编写针对百度极速版APP的自动化脚本通常涉及到使用WebView测试框架,比如Puppeteer或Selenium,这些工具允许你控制一个浏览器或WebView环境,从而与网页或APP中的Web内容进行交互。然而,对于原生APP(如百度极速版)的自动化测试,通常需要使用专门的移动应用自动化框架,如Appium。

Appium支持多种编程语言,包括JavaScript。要使用JavaScript和Appium进行自动化测试,你通常需要使用Appium的WD库。但请注意,直接操作原生APP的界面元素(如按钮、文本框等)通常需要使用元素的ID、类名或其他标识符,这些标识符可能随着APP的更新而发生变化。

以下是一个简化的示例,展示了如何使用JavaScript和Appium的WD库来启动一个Android设备上的百度极速版APP,并尝试与其中的某个元素进行交互。请注意,这个示例假设你已经正确设置了Appium服务器,并且已经知道了要与之交互的元素的ID。

首先,你需要安装必要的npm包:

 

bash复制代码

npm install wd appium

然后,你可以编写如下的JavaScript脚本:

 

javascript复制代码

while (true) {

        v_百度有效分钟 = parseInt(v_百度有效秒数 / 60);

        toast("已经观看视频: " + v_百度有效分钟 + "分钟");
        logd("v_无动作计次: ", v_无动作计次);

        if (v_无动作计次 >= 30) {
            v_无动作计次 = 0;
            for (let i = 0; i < 5; i++) {
                back();
                sleep(300);
            }
            utils.openApp("com.baidu.searchbox.lite");
        }


        let node_评论图标 = id("com.baidu.searchbox.lite:id/fi7").getOneNodeInfo(100);
        if (node_评论图标) {

            //有可能在短剧中
            let node = id("com.baidu.searchbox.lite:id/dmu").getOneNodeInfo(1000)


            //在视频中
            if (v_百度有效分钟 < v_百度检测分钟数) {
                var result = swipeToPoint(548 + random(-10, 10), 1911 + random(-10, 10), 558 + random(-10, 10), 461 + random(-10, 10), random(450, 2111));
                if (result) {
                    v_再看一个领取 = 0
                    toast("滑动成功");


                    var randoms = random(10, 30);
                    logd(randoms)
                    toast("总数: " + randoms);

                    v_百度有效秒数 = v_百度有效秒数 + randoms;

                    for (let i = randoms; i >= 0; i--) {
                        toast("观看倒计时: " + i);
                        sleep(1000);
                    }
                } else {
                    toast("滑动失败");
                }
            }


            let node_直播中 = text("直播中").getOneNodeInfo(100);
            if (node_直播中) {
                var result = swipeToPoint(548 + random(-10, 10), 1911 + random(-10, 10), 558 + random(-10, 10), 461 + random(-10, 10), random(450, 2111));
                logd("直播中滑动");
            }


            let node_秒后播放下一个视频 = textMatch(".*秒后播放下一个视频").getOneNodeInfo(100);
            if (node_秒后播放下一个视频) {
                swipeToPoint(548 + random(-10, 10), 1911 + random(-10, 10), 558 + random(-10, 10), 461 + random(-10, 10), random(450, 2111));
            }

        } else {
            //没在视频中
            logd("没在视频中");
            if (v_百度有效分钟 < v_百度检测分钟数) {
                let node_评论图标 = id("com.baidu.searchbox.lite:id/fi7").getOneNodeInfo(100);

                if (node_评论图标 == null) {
                    logd("没在 评论图标");
                    try {
                        let node_视频 = text("视频").id("com.baidu.searchbox.lite:id/bf2").getOneNodeInfo(100).previousSiblings()[0];
                        if (node_视频) {
                            logd("点击 视频");
                            logd(node_视频.bounds.left + 5, node_视频.bounds.top + 5);
                            clickPoint(node_视频.bounds.left + 5, node_视频.bounds.top + 5)
                            v_无动作计次 = 0;
                        } else {
                            v_无动作计次 = v_无动作计次 + 1;
                        }
                    } catch (e) {
                        logd("没找到 视频按钮");
                        let node_视频 = text("视频").getOneNodeInfo(100);
                        if (node_视频) {
                            logd("找到 视频");
                            node_视频.click();
                        } else {
                            logd("没找到 视频");
                        }
                    }
                }
            }

            let node_立即提现 = text("立即提现").getOneNodeInfo(100);
            if (node_立即提现) {
                node_立即提现.click();
                logd("立即提现")
            } else {
                logd("NO  立即提现")
            }

            let node_继续阅读赚更多 = text("继续阅读赚更多").getOneNodeInfo(100)
            if (node_继续阅读赚更多) {
                node_继续阅读赚更多.click();
                logd("继续阅读赚更多")
            } else {
                logd("NO   继续阅读赚更多")
            }

            let node_额外领金币 = textMatch("额外领.*金币").getOneNodeInfo(100);
            if (node_额外领金币) {
                node_额外领金币.click();
                v_无动作计次 = 0;
            }


            let node_s后可领取奖励 = textMatch(".*s后可领取奖励").getOneNodeInfo(100);
            if (node_s后可领取奖励) {
                v_无动作计次 = 0;
            }

            let node_看广告立即领特权 = text("看广告立即领特权").getOneNodeInfo(100);
            if (node_看广告立即领特权) {
                node_看广告立即领特权.click();
            } else {
                v_无动作计次 = v_无动作计次 + 1;
            }


            try {
                let node_任务完成_关闭 = text("任务完成").getOneNodeInfo(100).parent().siblings()[0];
                if (node_任务完成_关闭) {
                    node_任务完成_关闭.click();
                }
            } catch (e) {
                logd("没有找到   任务完成")
            }


            let node_关闭 = desc("关闭").pkg("com.baidu.searchbox.lite").getOneNodeInfo(100);
            if (node_关闭) {
                node_关闭.click();
            }


            let node_已领取金币 = textMatch("已领取.*金币").getOneNodeInfo(100);
            let node_已减少秒宝箱时长 = textMatch("已减少.*秒宝箱时长").getOneNodeInfo(100);
            if (node_已领取金币 != null || node_已减少秒宝箱时长 != null) {
                logd("1")
                let node_关闭 = id("com.baidu.searchbox.lite:id/iap").getOneNodeInfo(100);

                if (node_关闭) {
                    logd("2");
                    logd((node_关闭.bounds.left + node_关闭.bounds.right) / 2, (node_关闭.bounds.top + node_关闭.bounds.bottom) / 2);
                    node_关闭.clickEx();

                    //clickPoint((node_关闭.bounds.left+node_关闭.bounds.right) /2,(node_关闭.bounds.top+node_关闭.bounds.bottom) /2);

                } else {
                    logd("3")
                }
            }


            for (let i = 0; i < 30; i++) {
                let node_现金收益 = text("现金收益(元)").getOneNodeInfo(100);
                if (node_现金收益) {
                    let node_可领Arr = text("可领").getNodeInfo(100);
                    if (node_可领Arr) {
                        for (let i = 0; i < node_可领Arr.length; i++) {
                            logd("找到 可领", JSON.stringify(node_可领Arr[i].bounds));
                            clickPoint(node_可领Arr[i].bounds.left + 5, node_可领Arr[i].bounds.bottom + 5);
                            sleep(1000 * 3);
                        }

                        try {
                            let node_微信提现关闭 = text("微信提现").getOneNodeInfo(100).parent().parent().nextSiblings()[0];
                            if (node_微信提现关闭) {
                                logd("找到  node_微信提现关闭");
                                node_微信提现关闭.click();
                                sleep(1000);
                            }
                        } catch (e) {
                            logd("没有找到  node_微信提现关闭");
                            let node_我知道了 = text("我知道了").getOneNodeInfo(100);
                            if (node_我知道了) {
                                node_我知道了.click();
                                v_无动作计次 = 0;
                            } else {
                                v_无动作计次 = v_无动作计次 + 1;
                            }
                        }
                    } else {
                        logd("没有找到  可领");
                    }
                }

                sleep(500);

                if (v_滑动方位 == "向左") {
                    logd(v_滑动方位);
                    swipeToPoint(886, 1040, 291, 1020, 500);
                    v_滑动计次 = v_滑动计次 + 1;
                    if (v_滑动计次 >= 3) {
                        v_滑动方位 = "向右";
                        v_滑动计次 = 0;
                    }
                } else if (v_滑动方位 == "向右") {
                    logd(v_滑动方位);
                    swipeToPoint(291, 1020, 886, 1040, 500);
                    v_滑动计次 = v_滑动计次 + 1;
                    if (v_滑动计次 >= 3) {
                        v_滑动方位 = "完成";
                        v_滑动计次 = 0;
                    }
                } else if (v_滑动方位 == "完成") {
                    logd(v_滑动方位);
                    v_滑动方位 = "向左";
                    v_滑动计次 = 0;
                    break;
                }
            }


            let node_立即领取 = text("立即领取").getOneNodeInfo(100);
            if (node_立即领取) {
                node_立即领取.click();
            }

            let node_立即收下 = text("立即收下").getOneNodeInfo(100);
            if (node_立即收下) {
                logd("立即收下");
                node_立即收下.click();

            } else {
                logd("没有找到 立即收下");
                v_无动作计次 = v_无动作计次 + 1;
            }

            let node_残忍离开 = text("残忍离开").getOneNodeInfo(100);
            if (node_残忍离开) {
                node_残忍离开.click();
                v_无动作计次 = 0;
            } else {

                v_无动作计次 = v_无动作计次 + 1;
            }

            let node_我知道了 = text("我知道了").getOneNodeInfo(100);
            if (node_我知道了) {
                node_我知道了.click();
                v_无动作计次 = 0;
            } else {

                v_无动作计次 = v_无动作计次 + 1;
            }

            try {
                let node_可以提现啦_前面的关闭 = text("可以提现啦").getOneNodeInfo(100).previousSiblings()[0];
                if (node_可以提现啦_前面的关闭) {
                    node_可以提现啦_前面的关闭.click();
                    v_无动作计次 = 0;
                } else {
                    v_无动作计次 = v_无动作计次 + 1;
                }
            } catch (e) {
                logd("没有找到  可以提现啦");
            }

            let node_去阅读赚更多 = text("去阅读赚更多").getOneNodeInfo(100);
            if (node_去阅读赚更多) {
                node_去阅读赚更多.click();
                v_无动作计次 = 0;
            } else {
                v_无动作计次 = v_无动作计次 + 1;
            }

            let node_开心收下 = text("开心收下").getOneNodeInfo(100)
            if (node_开心收下) {
                node_开心收下.click();
                v_无动作计次 = 0;
            } else {
                v_无动作计次 = v_无动作计次 + 1;
            }


        }


        if (v_百度有效分钟 >= v_百度检测分钟数) {

            let node_任务_1 = id("com.baidu.searchbox.lite:id/aj0").getOneNodeInfo(1000)
            if (node_任务_1) {
                node_任务_1.click();
            }


            let node_任务 = text("任务").id("com.baidu.searchbox.lite:id/bf2").getOneNodeInfo(100);
            if (node_任务) {
                logd("找到 任务");
                node_任务.click();
                sleep(1000);
            } else {
                logd("没有找到 任务");

                // let node_视频 = text("视频").id("com.baidu.searchbox.lite:id/bf2").getOneNodeInfo(100);
                // if (node_视频) {
                //     logd("找到 视频");
                //     node_视频.click();
                //     sleep(1000);
                // } else {
                //     logd("没有找到 视频");
                // }

                let node_进入视频专辑的返回 = id("com.baidu.searchbox.lite:id/agr").getOneNodeInfo(1000);
                if (node_进入视频专辑的返回) {
                    logd("找到 进入视频专辑的返回");
                    node_进入视频专辑的返回.click();
                    sleep(1000);
                } else {
                    logd("没有找到 进入视频专辑的返回");
                }

                let node_动态 = text("动态").getOneNodeInfo(100);
                let node_全部 = text("全部").getOneNodeInfo(100);

                if (node_动态 != null || node_全部 != null) {
                    let node_node_进入视频专辑的返回_1 = id("com.baidu.searchbox.lite:id/dac").getOneNodeInfo(100)
                    if (node_node_进入视频专辑的返回_1) {
                        logd("找到 进入视频专辑的返回_1");
                        node_node_进入视频专辑的返回_1.click();
                        sleep(1000);
                    } else {
                        logd("没有找到 进入视频专辑的返回_1");
                    }
                }

                let node_选集 = text("选集").getOneNodeInfo(100);
                let node_粉丝 = text("粉丝").getOneNodeInfo(100);

                if (node_选集 != null && node_粉丝 == null) {
                    let node_推荐 = text("推荐").getOneNodeInfo(100);
                    if (node_推荐) {
                        logd("推荐")
                        node_推荐.click();
                        sleep(1000);
                    }
                }

            }

            let node_微信提现 = text("微信提现").getOneNodeInfo(100);
            if (node_微信提现) {
                node_微信提现.click();
            }

            let node_关闭应用 = text("关闭应用").getOneNodeInfo(100);
            if (node_关闭应用) {
                node_关闭应用.click();
            }


            //兑换人民币
            let node_金币收益 = text("金币收益").getOneNodeInfo(100);
            if (node_金币收益) {
                node_金币收益.click();
                sleep(1000);
            }

            let node_随时兑换 = text("随时兑换").getOneNodeInfo(100);
            if (node_随时兑换) {
                node_随时兑换.click();
                sleep(1000);
            }

            let node_确认兑换 = text("确认兑换").getOneNodeInfo(100);
            if (node_确认兑换) {
                node_确认兑换.click();
                sleep(1000);
            }


            let node_去提现 = text("去提现").getOneNodeInfo(100);
            if (node_去提现) {
                node_去提现.click();
                sleep(1000);
            }


            // let node_看视频赚金币 = textMatch("看视频赚.*金币").getOneNodeInfo(100);
            // if (node_看视频赚金币) {
            //     node_看视频赚金币.click();
            //     sleep(1000);
            // }


            //提现步骤
            try {
                let node_提现记录_具体金额_元_十位 = text("提现记录").getOneNodeInfo(100).parent().nextSiblings()[1].child(0).child(1).text;
                let node_提现记录_具体金额_元_个位 = text("提现记录").getOneNodeInfo(100).parent().nextSiblings()[1].child(1).child(0).text;
                var 总金额 = parseInt(node_提现记录_具体金额_元_十位 + node_提现记录_具体金额_元_个位);

                logd("目前总金额:" + 总金额);

                let node_立即提现 = text("立即提现").getOneNodeInfo(1000);
                if (node_立即提现) {
                    logd("找到 立即提现");

                    clickPoint((parseInt(node_立即提现.bounds.left) + parseInt(node_立即提现.bounds.right)) / 2, (parseInt(node_立即提现.bounds.top) + parseInt(node_立即提现.bounds.bottom)) / 2 + 100);

                    sleep(1000);

                    let node_提现到支付宝 = text("提现到支付宝").getOneNodeInfo(1000);
                    if (node_提现到支付宝) {
                        node_提现到支付宝.click();
                        sleep(1000);
                        return;
                    }
                } else {
                    logd("没找到 立即提现");

                    for (let i = 0; i < 6; i++) {

                        if (总金额 == 20) {
                            let node_20元 = text("20元").getOneNodeInfo(100);
                            if (node_20元) {
                                try {
                                    let 进一步信息 = node_20元.nextSiblings()[0].text;
                                    if (进一步信息) {
                                        if (进一步信息.indexOf("阅读") > -1) {
                                            logd("需要继续阅读");
                                            node_20元.click();
                                            sleep(1000);
                                            let node_去阅读 = text("去阅读").getOneNodeInfo(100);
                                            if (node_去阅读) {
                                                node_去阅读.click();
                                                sleep(1000);

                                            }
                                        } else if (进一步信息.indexOf("天后") > -1) {
                                            logd("天后解锁");
                                            总金额 = 10;
                                            logd("降低总金额为:10 试试提现;");
                                        }
                                    }
                                } catch (e) {
                                    logd("没有进一步信息");
                                    node_20元.click();
                                    sleep(1000);
                                    let node_提现到支付宝 = text("提现到支付宝").getOneNodeInfo(1000);
                                    if (node_提现到支付宝) {
                                        node_提现到支付宝.click();
                                        break;
                                    }
                                }
                            }
                        } else if (总金额 == 10) {
                            let node_10元 = text("10元").getOneNodeInfo(100);
                            if (node_10元) {
                                try {
                                    let 进一步信息 = node_10元.nextSiblings()[0].text;
                                    if (进一步信息) {
                                        if (进一步信息.indexOf("阅读") > -1) {
                                            logd("需要继续阅读");
                                            node_10元.click();
                                            sleep(1000);
                                            let node_去阅读 = text("去阅读").getOneNodeInfo(100);
                                            if (node_去阅读) {
                                                node_去阅读.click();
                                                sleep(1000);

                                            }
                                        } else if (进一步信息.indexOf("天后") > -1) {
                                            logd("天后解锁");
                                            总金额 = 3;
                                            logd("降低总金额为:3 试试提现;");
                                        }
                                    }
                                } catch (e) {
                                    logd("没有进一步信息");
                                    node_10元.click();
                                    sleep(1000);
                                    let node_提现到支付宝 = text("提现到支付宝").getOneNodeInfo(1000);
                                    if (node_提现到支付宝) {
                                        node_提现到支付宝.click();
                                        break;
                                    }
                                }
                            }
                        } else if (总金额 == 3) {
                            let node_3元 = text("3元").getOneNodeInfo(100);
                            if (node_3元) {
                                try {
                                    let 进一步信息 = node_3元.nextSiblings()[0].text;
                                    if (进一步信息) {
                                        if (进一步信息.indexOf("阅读") > -1) {
                                            logd("需要继续阅读");
                                            node_3元.click();
                                            sleep(1000);
                                            let node_去阅读 = text("去阅读").getOneNodeInfo(100);
                                            if (node_去阅读) {
                                                node_去阅读.click();
                                                sleep(1000);

                                            }
                                        } else if (进一步信息.indexOf("天后") > -1) {
                                            logd("天后解锁");
                                            总金额 = 1;
                                            logd("降低总金额为:1 试试提现;");
                                        }
                                    }
                                } catch (e) {
                                    logd("没有进一步信息");
                                    node_3元.click();
                                    sleep(1000);
                                    let node_提现到支付宝 = text("提现到支付宝").getOneNodeInfo(1000);
                                    if (node_提现到支付宝) {
                                        node_提现到支付宝.click();
                                        break;
                                    }
                                }
                            }
                        } else if (总金额 == 1) {
                            let node_1元 = text("1元").getOneNodeInfo(100);
                            if (node_1元) {
                                try {
                                    let 进一步信息 = node_1元.nextSiblings()[0].text;
                                    if (进一步信息) {
                                        if (进一步信息.indexOf("阅读") > -1) {
                                            logd("需要继续阅读");
                                            node_1元.click();
                                            sleep(1000);
                                            let node_去阅读 = text("去阅读").getOneNodeInfo(100);
                                            if (node_去阅读) {
                                                node_去阅读.click();
                                                sleep(1000);

                                            }
                                        } else if (进一步信息.indexOf("天后") > -1) {
                                            logd("天后解锁");
                                            总金额 = 0.5;
                                            logd("降低总金额为:0.5 试试提现;");
                                        }
                                    }
                                } catch (e) {
                                    logd("没有进一步信息");
                                    node_1元.click();
                                    sleep(1000);
                                    let node_提现到支付宝 = text("提现到支付宝").getOneNodeInfo(1000);
                                    if (node_提现到支付宝) {
                                        node_提现到支付宝.click();
                                        break;
                                    }
                                }
                            }
                        } else if (总金额 == 0.5) {
                            let node_0点5元 = text("0.5元").getOneNodeInfo(100);
                            if (node_0点5元) {
                                try {
                                    let 进一步信息 = node_0点5元.nextSiblings()[0].text;
                                    if (进一步信息) {
                                        if (进一步信息.indexOf("阅读") > -1) {
                                            logd("需要继续阅读");
                                            node_0点5元.click();
                                            sleep(1000);
                                            let node_去阅读 = text("去阅读").getOneNodeInfo(100);
                                            if (node_去阅读) {
                                                node_去阅读.click();
                                                sleep(1000);

                                            }
                                        } else if (进一步信息.indexOf("天后") > -1) {
                                            logd("天后解锁");
                                            总金额 = 0.3;
                                            logd("降低总金额为:0.3 试试提现;");
                                        }
                                    }
                                } catch (e) {
                                    logd("没有进一步信息");
                                    node_0点5元.click();
                                    sleep(1000);
                                    let node_提现到支付宝 = text("提现到支付宝").getOneNodeInfo(1000);
                                    if (node_提现到支付宝) {
                                        node_提现到支付宝.click();
                                        break;
                                    }

                                }
                            }
                        } else if (总金额 == 0.3) {
                            let node_0点3元 = text("0.3元").getOneNodeInfo(100);
                            if (node_0点3元) {
                                try {
                                    let 进一步信息 = node_0点3元.nextSiblings()[0].text;
                                    if (进一步信息) {
                                        if (进一步信息.indexOf("阅读") > -1) {
                                            logd("需要继续阅读");
                                            node_0点3元.click();
                                            sleep(1000);
                                            let node_去阅读 = text("去阅读").getOneNodeInfo(100);
                                            if (node_去阅读) {
                                                node_去阅读.click();
                                                sleep(1000);

                                            }
                                        } else if (进一步信息.indexOf("天后") > -1) {
                                            logd("天后解锁");
                                        }
                                    }
                                } catch (e) {
                                    logd("没有进一步信息");
                                    node_0点3元.click();
                                    sleep(1000);
                                    let node_提现到支付宝 = text("提现到支付宝").getOneNodeInfo(1000);
                                    if (node_提现到支付宝) {
                                        node_提现到支付宝.click();
                                        break;
                                    }
                                }
                            }
                        }
                    }
                }
            } catch (e) {
                logd("没有找到具体金额");
                let node_提现记录 = text("提现记录").getOneNodeInfo(100);
                if (node_提现记录) {

                    return;
                }
            }
        }


    }

在这个脚本中,我们首先导入了wd模块,并设置了与设备和APP相关的desired参数。然后,我们初始化了一个与Appium服务器的会话,并设置了设备参数。之后,我们查找了一个具有特定ID的元素并点击它。最后,我们处理任何可能出现的错误,并在完成所有操作后结束会话。

请注意,这只是一个非常基础的示例。在实际应用中,你可能需要处理更复杂的场景,如等待元素出现、处理弹窗、滚动页面等。此外,由于APP的结构和元素ID可能会随着版本更新而变化,因此自动化脚本可能需要定期维护和更新。

再次强调,直接操作APP的界面元素需要对APP的结构和元素标识符有深入的了解。如果你不熟悉这些,可能需要先对APP进行UI探索,或者使用开发者工具(如Appium Inspector)来查看和获取元素的标识符。

交流QQ群:878191637

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值