资深会员
- UID
- 4351408
- 积分
- 3060
- 可用积分
- 点
- 威望
- 个
- 水滴
- 滴
- 存在感
- 点
- NB
- 点
- 豆币
- 点
- 帖子
- 主题
- 好友
- 精华
- APP积分
- 点
|
教程看上个帖子
代码:
// 延迟时间设置和循环次数
var delay = 2000, loopCount = 1; // 设置延迟时间和循环次数
var expReceive = true; //是否领取编年任务奖励,true为开启,false为关闭
var Warriorsknow = true;//是否执行自动勇士知道,是的话只会点点一个问题,不管对错。
// 控件深度设置
var depthSettings = {
dailyDepth: 19,//互助问答的depth属性
ChronologyDepth: 17,//编年的depth属性
settingsDepth: 15,//设置的depth属性
};
// 检测设备是否处于唤醒状态,如果没有则唤醒设备
function wakeUpIfNeeded() {
if (!device.isScreenOn()) {
device.wakeUp();
sleep(1000); // 等待设备唤醒
device.keepScreenOn(30 * 1000); // 保持屏幕唤醒30秒
unlockDevice(); // 执行解锁操作
}
}
// 自适应屏幕分辨率的滑动解锁操作
function unlockDevice() {
var width = device.width;
var height = device.height;
// 假设从屏幕底部中间向上滑动1/4屏幕高度来解锁
swipe(width / 2, height * 0.95, width / 2, height * 0.1, 500);
sleep(1000); // 等待解锁完成
}
// 唤醒设备并保持唤醒状态
wakeUpIfNeeded();
// 获取当前星期
var dayOfWeek = new Date().getDay();
// 获取当前日期
var dayOfMonth = new Date().getDate();
// 等待应用启动完成,并确保无障碍服务已开启
auto.waitFor("accessibility");
// 检测是否运行了指定应用,如果没有则启动应用
function checkAndLaunchApp(packageName) {
if (currentPackage() !== packageName) {
app.launch(packageName);
sleep(5000); // 等待应用启动,时间可根据实际情况调整
}
}
// 封装点击元素函数,包含超时处理
function clickElement(element, msg) {
if (element) {
const bounds = element.bounds();
const x = bounds.centerX();
const y = bounds.centerY();
if (x < 0 || y < 0) {
log(`未找到元素:${msg}`);
return;
}
toastLog(msg);
click(x, y);
sleep(delay); // 点击后的默认等待时间
} else {
log(`未找到元素:${msg}`);
}
}
// 封装等待元素出现函数,包含超时控制
function waitForElement(selector, timeout) {
timeout = timeout || 5000; // 默认超时设置为3000毫秒
try {
return selector.findOne(timeout);
} catch (e) {
log("查找元素时出错:" + e);
return null;
}
}
// 执行固定任务
function performFixedTasks() {
var tasksEveryday = [
{ index: 34, text: "领取" },
{ index: 44, text: "领取" },
{ index: 54, text: "领取" },
{ index: 64, text: "领取" },
{ index: 74, text: "领取" },
];
var tasksMonday = [{ index: 24, text: "领取" }];
var tasks = [{ text: "知道了" }];
// 周一或每月1号执行 tasksMonday
if (dayOfWeek === 1 || dayOfMonth === 1) {
for (var i = 0; i < tasksMonday.length; i++) {
clickElement(waitForElement(indexInParent(tasksMonday[i].index).text(tasksMonday[i].text), 3000), tasksMonday[i].text)
if (tasks.length > 0) {
clickElement(waitForElement(text(tasks[0].text), 3000), tasks[0].text);
}
sleep(delay);
}
}
// 每天执行 tasksEveryday
for (var i = 0; i < tasksEveryday.length; i++) {
clickElement(waitForElement(indexInParent(tasksEveryday[i].index).text(tasksEveryday[i].text), 3000), tasksEveryday[i].text);
if (tasks.length > 0) {
clickElement(waitForElement(text(tasks[0].text), 3000), tasks[0].text)
}
sleep(delay);
}
}
// 执行固定任务
function SignIn() {
var tasksSignIn = [{ index: 10, text: "签到" },];
var tasks = [
{ text: "确认" },
{ text: "知道了" }
];
for (var i = 0; i < tasksSignIn.length; i++) {
clickElement(waitForElement(indexInParent(tasksSignIn[i].index).text(tasksSignIn[i].text), 3000), tasksSignIn[i].text);
for (var j = 0; j < tasks.length; j++) {
clickElement(waitForElement(text(tasks[j].text), 3000), tasks[j].text);
}
sleep(delay);
}
}
// 封装执行特定操作的函数
function performWeeklyReportTasks() {
// 点击 "我的" 页面
clickElement(waitForElement(id("com.tencent.gamehelper.dnf:id/content_fragment_3").text("我的"), 5000), "点击 [我的]");
sleep(delay);
// 滑动屏幕
unlockDevice();
// 点击 "周报" 页面
clickElement(waitForElement(text("周报"), 5000), "点击 [周报]");
sleep(delay);
//分享
clickElement(waitForElement(className("android.widget.TextView").id("com.tencent.gamehelper.dnf:id/funcation").text("分享"), 3000), "点击 [分享]");
// 返回上一级页面
back();
sleep(delay);
// 返回上一级页面
back();
sleep(delay);
}
// 检测并启动应用
checkAndLaunchApp("com.tencent.gamehelper.dnf");
// 执行操作循环
for (var j = 1; j <= loopCount; j++) {
// 点击 "动态"
clickElement(waitForElement(id("com.tencent.gamehelper.dnf:id/content_fragment_1").text("发现"), 3000), "点击 [发现]");
sleep(delay);
//互助问答
clickElement(waitForElement(className("android.widget.LinearLayout").indexInParent(0).drawingOrder("1").depth(depthSettings.dailyDepth).drawingOrder("1"), 3000), "点击 [互助问答]");
sleep(delay);
//点击 "资讯"
clickElement(waitForElement(className("android.view.View").indexInParent(0).drawingOrder("0"), 3000), "点击 [资讯]")
back();
sleep(delay);
back();
sleep(delay);
if (dayOfWeek === 1 || dayOfMonth === 1) {
performWeeklyReportTasks();
} else {
log("今天不是周一或者一号");
}
if (expReceive === true) {
//定义并执行任务函数
clickElement(waitForElement(id("com.tencent.gamehelper.dnf:id/content_fragment_0").text("首页"), 3000), "点击 [首页]");
sleep(delay);
clickElement(waitForElement(className("android.view.ViewGroup").indexInParent(0).depth(depthSettings.ChronologyDepth), 3000), "点击 [编年]");
sleep(delay);
unlockDevice(); // 划动
SignIn();
unlockDevice(); // 划动
unlockDevice(); // 划动
// 执行固定任务
performFixedTasks();
sleep(delay);
back();
sleep(delay);
}
// 如果循环次数不为1,则执行以下操作
if (loopCount !== 1) {
// 点击 "我的" 页面
clickElement(waitForElement(id("com.tencent.gamehelper.dnf:id/content_fragment_3").text("我的"), 3000), "点击 [我的]");
sleep(delay);
// 进入设置页面
clickElement(waitForElement(className("android.widget.ImageView").id("com.tencent.gamehelper.dnf:id/action_bar_search").depth(depthSettings.settingsDepth), 3000), "点击 [设置]");
// 切换账号
clickElement(waitForElement(className("android.widget.FrameLayout").indexInParent(1).drawingOrder("2").column("0"), 3000), "点击 [切换账号]");
sleep(delay);
}
}
// 取消屏幕唤醒状态
device.cancelKeepingAwake();
|
|