小康会员
- UID
- 4351408
- 积分
- 2863
- 可用积分
- 点
- 威望
- 个
- 水滴
- 滴
- 存在感
- 点
- NB
- 点
- 豆币
- 点
- 帖子
- 主题
- 好友
- 精华
- APP积分
- 点
|
使用方法直接参考我之前的帖子:https://bbs.colg.cn/thread-9248480-1-1.html
直接下载js代码或者复制代码写进auto.js
下载地址:链接:https://share.weiyun.com/sy4zsMMu 密码:pkbv9x
代码部分
————————————————————————————————————
————————————————————————————————————
// 延迟时间设置和循环次数
var delay = 3000, loopCount = 2; // 设置延迟时间和循环次数
var expReceive = true; //是否领取编年任务奖励,true为开启,false为关闭
// 控件深度设置
var depthSettings = {
newsDepth: 4,//精选的depth属性
dynamicDepth: 5,//资讯的depth属性
leftSideDepth: 3,//左侧的depth属性
settingsDepth: 5,//设置的depth属性
accountDepth: 2,//切换账号的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(30000); // 等待应用启动,时间可根据实际情况调整
}
}
// 封装点击元素函数,包含超时处理
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; // 默认超时设置为5000毫秒
try {
return selector.findOne(timeout);
} catch (e) {
log("查找元素时出错:" + e);
return null;
}
}
// 封装查找并点击元素函数
function findAndClick(selector, msg) {
clickElement(waitForElement(selector), msg);
}
// 封装执行特定操作的函数
function performWeeklyReportTasks() {
// 点击 "我的" 页面
clickElement(waitForElement(id("com.tencent.gamehelper.dnf:id/content_fragment_3").text("我的"), 5000), "点击 [我的]");
sleep(delay);
// 解锁设备
unlockDevice();
// 点击 "周报" 页面
clickElement(waitForElement(text("周报"), 5000), "点击 [周报]");
sleep(delay);
// 点击 "分享" 页面
var share = waitForElement(className("android.widget.TextView").id("com.tencent.gamehelper.dnf:id/funcation").text("分享"), 5000);
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();
if (dayOfWeek === 0 || dayOfMonth === 1) {
performWeeklyReportTasks();
} else {
log("今天不是周一或者一号");
}
// 点击 "资讯"
clickElement(waitForElement(id("com.tencent.gamehelper.dnf:id/content_fragment_0").text("资讯"), 5000), "点击 [资讯]");
sleep(delay);
// 点击 "精选" 分页
var featured = waitForElement(className("android.widget.LinearLayout").depth(depthSettings.newsDepth).indexInParent(1), 5000);
clickElement(featured, "点击 [精选]");
sleep(delay);
// 点击 "动态"
clickElement(waitForElement(id("com.tencent.gamehelper.dnf:id/content_fragment_1").text("动态"), 5000), "点击 [动态]");
sleep(delay);
// 点击 "资讯"
clickElement(waitForElement(id("com.tencent.gamehelper.dnf:id/content_fragment_0").text("资讯"), 5000), "点击 [资讯]");
sleep(delay);
// 点击第一至第四个资讯
for (var i = 5; i <= 8; i++) {
var info = waitForElement(className("android.widget.LinearLayout").depth(depthSettings.dynamicDepth).indexInParent(i), 5000);
if (info) {
clickElement(info, "点击第" + (i) + "个资讯");
sleep(delay);
back(); // 返回
sleep(delay);
} else {
log("未找到第" + (i) + "个资讯");
}
}
if (expReceive === true) {
// 定义并执行任务函数
clickElement(waitForElement(className("android.widget.FrameLayout").indexInParent(0).depth(depthSettings.leftSideDepth), 5000), "点击 [左侧]");
sleep(delay);
clickElement(waitForElement(className("android.widget.FrameLayout").id("com.tencent.gamehelper.dnf:id/dnf_digit_sys"), 5000), "点击 [编年]");
sleep(delay);
unlockDevice(); // 划动
// 执行固定任务
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: "确 认" }
];
for (var i = 0; i < tasks.length; i++) {
clickElement(waitForElement(indexInParent(tasks[i].index).text(tasks[i].text), 5000), tasks[i].text);
sleep(delay);
}
}
// 执行固定任务
performFixedTasks();
sleep(delay);
back();
sleep(delay);
back();
sleep(delay);
}
// 如果循环次数不为1,则执行以下操作
if (loopCount !== 1) {
// 点击左侧图标
clickElement(waitForElement(className("android.widget.FrameLayout").indexInParent(0).depth(depthSettings.leftSideDepth), 5000), "点击 [左侧]");
// 进入设置页面
findAndClick(className("android.widget.LinearLayout").indexInParent(3).depth(depthSettings.settingsDepth), "点击 [设置]");
// 执行操作
findAndClick(text("账号管理"), "点击 [账号管理]");
// 切换账号
clickElement(waitForElement(className("android.widget.FrameLayout").depth(depthSettings.accountDepth).drawingOrder("4").indexInParent("3"), 5000), "点击 [切换账号]");
sleep(delay);
back();
toastLog("返回");
sleep(delay);
back();
toastLog("返回");
sleep(delay);
back();
toastLog("返回");
sleep(delay);
}
}
// 取消屏幕唤醒状态
device.cancelKeepingAwake();
|
|