[英]How to automate clicks on elements
我在 reddit 上收到了很多已保存的帖子/評論(似乎有 1000 條),我想知道如何取消保存它們,而不點擊每個人的取消保存。
到目前為止,這是我的方法:
我右鍵單擊帖子的“ Unsave
按鈕,然后單擊“檢查”以找出類名,然后我用它來分析有多少帖子具有該按鈕:
document.getElementsByClassName("_10K5i7NW6qcm-UoCtpB3aK _3tRpmsTw--cwH6_MAO3ZOm _3yh2bniLq7bYr4BaiXowdO _2sAFaB0tx4Hd5KxVkdUcAx _28vEaVlLWeas1CDiLuTCap")
結果是一個數組,我現在更進一步,將它保存在一個變量中,以運行一個帶有點擊事件的函數:
var buttonInstances = document.getElementsByClassName("_10K5i7NW6qcm-UoCtpB3aK _3tRpmsTw--cwH6_MAO3ZOm _3yh2bniLq7bYr4BaiXowdO _2sAFaB0tx4Hd5KxVkdUcAx _28vEaVlLWeas1CDiLuTCap")
buttonInstances.someClickFunction()
事情是,(除了我不知道someClickFunction()
應該做什么),保存按鈕似乎具有相同的類。 你會怎么做? 我已經看到了一些解決方案,但代碼似乎已被棄用,我只是不斷復制和粘貼並出現錯誤。
也許有人可以指出我正確的方向,也許在途中我可以收集一些關於let
和var
進一步知識,以及為什么我應該使用箭頭函數等......
我希望這能讓你相信我至少自己嘗試過一些東西。
在舊的 reddit 上要容易得多 - 元素的命名非常可預測。 link-unsave-button
是<li>
的類名,它們是鏈接的取消保存按鈕的父級, comment-unsave-button
是<li>
的類名,它們是評論的取消保存按鈕的父級。
因此,使用選擇器字符串
.link-unsave-button > a, .comment-unsave-button > a
你可以遍歷所有那些<a>
和.click()
它們。
因為每次點擊都需要一個網絡操作,你應該在每次點擊之間添加一個延遲,比如 500 毫秒:
const delay = ms => new Promise(res => setTimeout(res, ms));
(async () => {
for (const a of document.querySelectorAll('.link-unsave-button > a, .comment-unsave-button > a')) {
a.click();
await delay(500);
}
console.log('done');
})();
當您使用舊版 reddit 時,這會刪除您/saved
頁面上的所有已保存鏈接。 (是的,我自己試過,它有效)
您可能可以在新的 reddit 上做類似的事情(只需使用新的 reddit 上的選擇器),但類名可能會有所不同(在我的設備上,它們與您的不同),您可能需要重新檢查 DOM 和在某些情況下更改代碼,這不是很好。 最好從舊的 reddit 上做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.