(function (win) {
/**
*
* @param {el} 要点击的DOM元素
* @param {delayTime} 要等待当前时间后,点击的DOM元素
* @param {startTime} 活动开始时间 如:要在10:59:59开始就输入 105959
* @param {endTime} 活动开始时间 如:要在11:59:59开始就输入 115959
*/
var loot = function ({
domArr = [{
el: document.querySelector("body"),
delayTime: 0
}],
startTime,
endTime,
pollingInterval = 100,
}) {
console.log("《《《 脚本开始执行 》》》");
if (startTime >= endTime) {
alert("结束时间不能小于或等于开始时间!");
return;
}
if ("" + startTime.length > 6 || "" + endTime.length > 6) {
alert("时间长度6位 如:(105959)!");
console.log("《《《 脚本结束执行 》》》");
return;
}
if (pollingInterval > 1000 * 60) {
alert("轮询时间不能超过1分钟!");
console.log("《《《 脚本结束执行 》》》");
return;
}
var defaultBtn1, defaultBtn2, defaultBtn3;
var awaitTime = pollingInterval ? pollingInterval : 100;
if (timer || timer1) {
clearInterval(timer1);
clearTimeout(timer);
timer1 = null;
timer = null;
}
var timer = null;
var timer1 = null;
var activeIndex = 0;
var obj = {
length: domArr.length
};
if (!obj.length) return;
for (let i = 0; i < domArr.length; i++) {
obj["btn" + i] = {
el: () => domArr[i]["el"] || null,
delayTime: Number(domArr[i]["delayTime"]) || 0,
};
}
function pay(num, n) {
var len = num.toString().length;
while (len < n) {
num = "0" + num;
len++;
}
return num;
}
var oldMinute = 0
var getTimer = function (startTime = 85959, endTime = 91000) {
var type = -1;
var d = new Date();
var hour = pay(d.getHours(), 2); //得到小时数
var minute = pay(d.getMinutes(), 2); //得到分钟数
var second = pay(d.getSeconds(), 2); //得到秒数
var milliseconds = pay(d.getMilliseconds(), 3); //得到毫秒数
var mtime = ("" + hour + minute + second) * 1;
var mtimeNow = ("" + hour + minute + second + milliseconds) * 1;
var startTimeNow = ("" + startTime + 970) * 1;
var endTimeNow = ("" + endTime + 970) * 1;
console.log(">>" + mtimeNow + "ms");
if (mtimeNow > startTimeNow && mtimeNow < endTimeNow) {
console.log(
"type = 1时," + mtimeNow + "ms == " + "startTimeNow:" + startTimeNow
);
type = 1;
} else if (mtime > endTime) {
type = 0;
} else {
type = -1;
if (oldMinute !== minute) {
oldMinute = minute;
console.clear();
console.log("-----------清空---------------");
}
}
return type;
};
var el1 = obj["btn0"]["el"]();
if (!el1) {
alert("初始化dom没获取到,请重新输入!!!");
console.log("》》脚本退出执行!《《");
return;
}
timer1 = setInterval(() => {
var timeType = getTimer(startTime, endTime);
if (timeType == 0) {
alert("超出截至时间!");
clearInterval(timer1);
clearTimeout(timer);
timer1 = null;
timer = null;
activeIndex = 0;
}
if (activeIndex > 0) return;
console.log("当前时间!");
if (timeType == 1) {
if (el1) {
confirm(obj["btn" + activeIndex]["el"], 0);
} else {
alert("没获取到" + obj["btn0"]["el"] + "按钮");
clearInterval(timer1);
}
}
}, awaitTime);
var confirm = function (domElCb, delay) {
activeIndex += 1;
timer = setTimeout(() => {
var btnConfirmDom = domElCb();
if (btnConfirmDom) {
console.log(
"《《《 执行" +
activeIndex +
" 开始 》》》-----------" +
getTimer(startTime, endTime)
);
btnConfirmDom.click();
console.log("《《《 执行" + activeIndex + " 完成 》" + Date.now() + "》》");
clearInterval(timer1);
if (obj.length > activeIndex) {
// debugger;
confirm(
obj["btn" + activeIndex]["el"],
obj["btn" + activeIndex]["delayTime"]
);
} else {
console.log("《《《 脚本结束执行 》》》");
clearTimeout(timer);
clearInterval(timer1);
timer = null;
timer1 = null;
activeIndex = 0;
window.loot = null;
}
} else {
console.log(
"---------《《《 执行" + activeIndex + " 失败 》》》-----------"
);
if (obj["btn" + activeIndex]) {
confirm(
obj["btn" + activeIndex]["el"],
obj["btn" + activeIndex]["delayTime"]
);
} else {
console.log("《《《 脚本结束执行 》》》");
clearTimeout(timer);
clearInterval(timer1);
timer = null;
timer1 = null;
activeIndex = 0;
window.loot = null;
}
}
}, delay);
};
};
if (!win.loot) {
alert(
`需要手动调用loot方法,如:
loot({
// 预先获取需要触发dom元素,可设置多个元素依次点击(设置delayTime控制执行间隔时间)
domArr: [
{
el: document.querySelector( "#app > div" ) ,
delayTime: 0,
},
{
el: document.querySelector( "#app > div > div:nth-child(2) " ),
delayTime: 50,
},
{
el: document.querySelector( "#app > div > div:nth-child(2) > div > button" ),
delayTime: 100,
},
],
startTime: 125959, // 预约触发时间
endTime: 130000, // 结束运行时间
pollingInterval: 100, // 轮询检测时间ms
});
`
);
win.loot = loot;
}
})(window);
自动化定时点击脚本
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 需求 在 A 界面,点击跳转到 B 界面(该界面会执行一些业务),再点击返回键出现 Dialog 弹窗,点击确认退...
- 本教程为新手学习python教程废话少说,下面开始python教程我们先用tkinter搭建好脚本的基本界面 (不...
- 会有以下几种情况 1、打开新的窗口,需要切换窗口句柄 2、alert或iframe,需要webdriver切换至对...