簡體   English   中英

如何自動點擊元素

[英]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()應該做什么),保存按鈕似乎具有相同的類。 你會怎么做? 我已經看到了一些解決方案,但代碼似乎已被棄用,我只是不斷復制和粘貼並出現錯誤。

也許有人可以指出我正確的方向,也許在途中我可以收集一些關於letvar進一步知識,以及為什么我應該使用箭頭函數等......

我希望這能讓你相信我至少自己嘗試過一些東西。

在舊的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM