使用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_任务完成_关闭) {