资深会员
- UID
- 4351408
- 积分
- 3193
- 可用积分
- 点
- 威望
- 个
- 水滴
- 滴
- 存在感
- 点
- NB
- 点
- 豆币
- 点
- 帖子
- 主题
- 好友
- 精华
- APP积分
- 点
|
本帖最后由 suifeng0917 于 2025-1-5 02:06 编辑
使用方法直接参考我之前的帖子:https://bbs.colg.cn/thread-9248480-1-1.html
我增加了比较多的延迟部分,为了适应网络不好的,如果你网络比较好,你可以测试一下,删除掉部分的。
有问题加群我会解答:740490052
删除酒馆,左侧,切换账号的depth值,增加一个编年的depth值
代码部分
————————————————————————————————————————————
// 延迟时间设置和循环次数
var delay = 3000, loopCount = 1; // 设置延迟时间和循环次数
var expReceive = true; //是否领取编年任务奖励,true为开启,false为关闭
var Warriorsknow = true;//是否执行自动勇士知道,是的话只会点点一个问题,不管对错。
// 控件深度设置
var depthSettings = {
dailyDepth: 6,//互助问答的depth属性
leftSideDepth: 5,//编年的depth属性
settingsDepth: 3,//设置的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.8, width / 2, height * 0.3, 500);
sleep(1000); // 等待解锁完成
}
// 唤醒设备并保持唤醒状态
wakeUpIfNeeded();
// 等待应用启动完成,并确保无障碍服务已开启
auto.waitFor("accessibility");
// 检测是否运行了指定应用,如果没有则启动应用
function checkAndLaunchApp(packageName) {
if (currentPackage() !== packageName) {
app.launch(packageName);
sleep(13000); // 等待应用启动,时间可根据实际情况调整
}
}
// 封装点击元素函数,包含超时处理
function clickElement(element, msg) {
if (element) {
const bounds = element.bounds();
const x = bounds.centerX();
const y = bounds.centerY();
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 performWeeklyReportTasks() {
// 点击 "我的" 页面
clickElement(waitForElement(id("com.tencent.gamehelper.dnf:id/content_fragment_3").text("我的"), 3000), "点击 [我的]");
sleep(delay);
// 滑动屏幕
unlockDevice();
// 点击 "周报" 页面
clickElement(waitForElement(text("周报"), 3000), "点击 [周报]");
sleep(delay);
// 点击 "分享" 页面
var share = waitForElement(className("android.widget.TextView").id("com.tencent.gamehelper.dnf:id/funcation").text("分享"), 3000);
clickElement(share, "点击 [分享]");
sleep(delay);
// 返回上一级页面
back();
toastLog("返回");
sleep(delay);
// 再次返回上一级页面
back();
toastLog("返回");
sleep(delay);
}
// 获取当前星期几
var dayOfWeek = new Date().getDay();
// 检测并启动应用
checkAndLaunchApp("com.tencent.gamehelper.dnf");
// 执行操作循环
for (var j = 1; j <= loopCount; j++) {
// 如果是星期一(dayOfWeek === 1),执行以下操作
var dayOfWeek = new Date().getDay(); // 获取当前日期的星期几(0表示星期日,1表示星期一,依次类推)
// 获取当前日期
var dayOfMonth = new Date().getDate();
// 点击 "动态"
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), 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(1).depth(depthSettings.leftSideDepth), 3000), "点击 [编年]");
sleep(delay);
unlockDevice(); // 划动
if (Warriorsknow === true) {
if (dayOfWeek === 1 || dayOfMonth === 1) {
clickElement(waitForElement(className("android.view.View").indexInParent(7), 3000), "点击 [勇士知道]")
sleep(delay);
clickElement(waitForElement(className("android.view.View").indexInParent(3).desc("即刻开始"), 3000), "点击 [即刻开始]");
sleep(delay);
clickElement(waitForElement(className("android.view.View").indexInParent(0).column("0"), 3000), "点击 [题目]");
sleep(delay);
back();
sleep(delay);
} else {
log("今天不是周一或者一号");
}
if (dayOfWeek === 1 || dayOfMonth === 1) {
//周报
clickElement(waitForElement(className("android.view.View").indexInParent(4), 3000), "点击 [周报]")
sleep(delay);
//分享
clickElement(waitForElement(className("android.widget.TextView").id("com.tencent.gamehelper.dnf:id/funcation").text("分享"), 3000), "点击 [题目]");
// 返回上一级页面
back();
sleep(delay);
// 返回上一级页面
back();
sleep(delay);
} else {
log("今天不是周一或者一号");
}
}
// 执行固定任务
function performFixedTasks() {
var tasks = [
{ index: 5, text: "领取奖励exp+15" },
{ index: 1, text: "确 认" },
{ index: 16, text: "领取奖励exp+5" },
{ index: 1, text: "确 认" },
{ index: 19, text: "领取奖励exp+4" },
{ index: 1, text: "确 认" },
{ index: 22, text: "领取奖励exp+24" },
{ index: 1, text: "确 认" },
{ index: 25, text: "领取奖励exp+15" },
{ index: 1, text: "确 认" },
{ index: 13, text: "签到exp+10" },
{ index: 1, text: "确 认" },
{ index: 3, text: "确 认" },
{ index: 1, text: "确 认" },
{ index: 8, text: "领取奖励exp+7" }
];
for (var i = 0; i < tasks.length; i++) {
clickElement(waitForElement(indexInParent(tasks[i].index).text(tasks[i].text), 3000), tasks[i].text);
sleep(delay);
}
}
// 执行固定任务
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();
|
|