cxxjackie 发表于 2023-11-10 18:13
把你的点击操作等代码写在 do something 那里,不要改前面的东西,前面代码的作用就是暂停5秒,类似其他 ...
大神目前是可以实现每隔5秒实现模拟点击一次,但奇怪的是最后一次循环打印console.log('发现div:', targetDiv);时所有打印的值变成一样内容,前几个值以前是不一样的。而且我把打印的值targetDiv传给const targetDivValues = [];在保存html时最后获取的targetDiv没有保存,但value保存到html里了,下面是代码
var randomChars = [];
let title;
// 创建一个空数组用于存储targetDiv的值
const targetDivValues = [];
async function monitorDomChange() {
// 不要用forEach
for (const value of randomChars) {
console.log(value);
await new Promise(r => setTimeout(r, 10000));
// do something
if (value) {
// 在这里执行您想要的操作
const event = new MouseEvent('click', {
bubbles: true,
cancelable: true,
view: unsafeWindow,
});
value.dispatchEvent(event);
}
//debugger
const targetDivSelector = '#endText';
const targetDiv = document.querySelector(targetDivSelector);
if (targetDiv) {
console.log('发现div:', targetDiv);
// 将targetDiv的值保存在存储器中
targetDivValues.push(targetDiv.innerHTML);
targetDivValues.push(value.innerHTML);
} else {
console.log('没有发现div');
}
}
// 将存储器数据保存为HTML文件
await new Promise(r => setTimeout(r, 20000));
const htmlContent =targetDivValues.map(value => value.replace(/&draft=0&type=norm&pm=y/g, '').replace(/&draft=0&type=norm&actID=0/g, '')).join('');
const blob = new Blob([htmlContent], { type: 'text/html' });
const url = URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = url;
console.log('书名1111',title);
link.download = ${title}.html
;
link.click();
}