使用 JS 控制台删除推文
Deleting tweets with JS console
我正在尝试在我的 Twitter 页面上的 JS 控制台中删除推文。
如果我通过选择按钮然后单击来手动完成,我可以手动 运行 3 个不同的功能。
const delButton=()=>{
document.querySelectorAll('[data-testid="caret"]')[0].click()
};
const clickDel=()=>{
document.querySelector("#layers > div.css-1dbjc4n.r-1d2f490.r-105ug2t.r-u8s1d.r-zchlnj.r-ipm5af > div > div > div > div:nth-child(2) > div.css-1dbjc4n.r-yfoy6g.r-z2wwpe.r-xnswec.r-1ekmkwe.r-1udh08x.r-u8s1d > div > div > div > div:nth-child(1) > div.css-1dbjc4n.r-16y2uox.r-1wbh5a2 > div > span");
};
const confirmDel=()=>{
document.querySelector("#layers > div:nth-child(2) > div > div > div > div > div > div.css-1dbjc4n.r-1awozwy.r-1kihuf0.r-18u37iz.r-1pi2tsx.r-1777fci.r-1pjcn9w.r-fxte16.r-1xcajam.r-ipm5af.r-9dcw1g > div.css-1dbjc4n.r-1awozwy.r-yfoy6g.r-1867qdf.r-1jgb5lz.r-pm9dpa.r-1ye8kvj.r-1rnoaur.r-d9fdf6.r-1sxzll1.r-13qz1uu > div.css-1dbjc4n.r-18u37iz.r-13qz1uu > div.css-18t94o4.css-1dbjc4n.r-1dgebii.r-42olwf.r-sdzlij.r-1phboty.r-rs99b7.r-16y2uox.r-1w2pmg.r-1vuscfd.r-1dhvaqw.r-1ny4l3l.r-1fneopy.r-o7ynqc.r-6416eg.r-lrvibr > div > span > span").click()
}
delButton();
clickDel();
confirmDel();
我尝试了几种不同的方法,如果我 运行 通过 运行 在控制台中对每个函数进行手动操作,就可以了。但是,当我尝试将它们放入 运行 全部 3 的函数时,第二个不会点击,因为它还没有准备好。我在解雇他们之前尝试使用 setTimeout,但它仍然没有用。我也尝试过使用 async 和 await,但我认为我对这个问题的理解是有限的。
const runEmAll=()=>{
setTimeout(delButton(), 1000);
setTimeout(clickDel(), 1000);
setTimeout(confirmDel(), 1000);
}
runEmAll();
// or I also tried...
const runDel = async ()=>{
await delButton();
}
runDel().then(clickDel());
再次失败..我得到的错误是
VM1649:2 Uncaught TypeError: Cannot read property 'click' of null
参考clickDel函数
按照 Phix 的建议,我开始工作了,
()=>{
setTimeout(delButton, 1000);
setTimeout(clickDel, 1000);
setTimeout(confirmDel, 1000);
}
登录 > 在您的个人资料上 > 推文选项卡 > 执行
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
document.querySelectorAll('[data-testid="caret"]')[0].click()
await sleep(1000)
document.querySelectorAll('[role="menuitem"]')[0].click()
await sleep(1000)
document.querySelectorAll('[data-testid="confirmationSheetConfirm"]')[0].click()
我正在尝试在我的 Twitter 页面上的 JS 控制台中删除推文。 如果我通过选择按钮然后单击来手动完成,我可以手动 运行 3 个不同的功能。
const delButton=()=>{
document.querySelectorAll('[data-testid="caret"]')[0].click()
};
const clickDel=()=>{
document.querySelector("#layers > div.css-1dbjc4n.r-1d2f490.r-105ug2t.r-u8s1d.r-zchlnj.r-ipm5af > div > div > div > div:nth-child(2) > div.css-1dbjc4n.r-yfoy6g.r-z2wwpe.r-xnswec.r-1ekmkwe.r-1udh08x.r-u8s1d > div > div > div > div:nth-child(1) > div.css-1dbjc4n.r-16y2uox.r-1wbh5a2 > div > span");
};
const confirmDel=()=>{
document.querySelector("#layers > div:nth-child(2) > div > div > div > div > div > div.css-1dbjc4n.r-1awozwy.r-1kihuf0.r-18u37iz.r-1pi2tsx.r-1777fci.r-1pjcn9w.r-fxte16.r-1xcajam.r-ipm5af.r-9dcw1g > div.css-1dbjc4n.r-1awozwy.r-yfoy6g.r-1867qdf.r-1jgb5lz.r-pm9dpa.r-1ye8kvj.r-1rnoaur.r-d9fdf6.r-1sxzll1.r-13qz1uu > div.css-1dbjc4n.r-18u37iz.r-13qz1uu > div.css-18t94o4.css-1dbjc4n.r-1dgebii.r-42olwf.r-sdzlij.r-1phboty.r-rs99b7.r-16y2uox.r-1w2pmg.r-1vuscfd.r-1dhvaqw.r-1ny4l3l.r-1fneopy.r-o7ynqc.r-6416eg.r-lrvibr > div > span > span").click()
}
delButton();
clickDel();
confirmDel();
我尝试了几种不同的方法,如果我 运行 通过 运行 在控制台中对每个函数进行手动操作,就可以了。但是,当我尝试将它们放入 运行 全部 3 的函数时,第二个不会点击,因为它还没有准备好。我在解雇他们之前尝试使用 setTimeout,但它仍然没有用。我也尝试过使用 async 和 await,但我认为我对这个问题的理解是有限的。
const runEmAll=()=>{
setTimeout(delButton(), 1000);
setTimeout(clickDel(), 1000);
setTimeout(confirmDel(), 1000);
}
runEmAll();
// or I also tried...
const runDel = async ()=>{
await delButton();
}
runDel().then(clickDel());
再次失败..我得到的错误是
VM1649:2 Uncaught TypeError: Cannot read property 'click' of null
参考clickDel函数
按照 Phix 的建议,我开始工作了,
()=>{
setTimeout(delButton, 1000);
setTimeout(clickDel, 1000);
setTimeout(confirmDel, 1000);
}
登录 > 在您的个人资料上 > 推文选项卡 > 执行
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
document.querySelectorAll('[data-testid="caret"]')[0].click()
await sleep(1000)
document.querySelectorAll('[role="menuitem"]')[0].click()
await sleep(1000)
document.querySelectorAll('[data-testid="confirmationSheetConfirm"]')[0].click()