我瀏覽了很多帖子,似乎找不到我的問題的答案。
我的間隔中有一個 console.log 運算式。當代碼在控制臺中運行時,它完美地執行,但拒絕控制臺記錄我的字串,通知客戶端用戶腳本正在運行。
這是我的帶注釋的代碼:
- 初始化喜歡為0
- 設定間隔和秒數(以毫秒為單位)
- 定義like按鈕
- 定義下一張圖片按鈕
- 如果有likeButton,點擊likeButton
- 將 1 添加到喜歡并記錄以控制臺字串
- 單擊箭頭轉到新照片
let likes = 0;
setInterval(() => {
const likeButton = document.querySelector('svg[aria-label="Like"]');
const nextButton = document.querySelector('svg[aria-label="Next"]');
if (likeButton) {
likeButton.parentNode.parentElement.click()
likes ;
console.log(`You've liked ${likes} post(s)`);
}
nextButton.parentElement.parentNode.click();
}, 20000);
uj5u.com熱心網友回復:
從inspect source我在 Instagram 上看過的幾篇帖子來看,點贊按鈕似乎有兩種狀態。
<svg aria-label="Like" />當帖子還沒有被點贊時。<svg aria-label="Unlike" />當您已經喜歡該帖子時。
問題在于const likeButton = document.querySelector('svg[aria-label="Like"]');將整個元素作為物件回傳,并且不是真/假值,因此if (likeButton) {永遠不會為真,但正如@Unmitigated 指出的那樣,它可能是“真實的”。要確定按鈕是否已被單擊并消除任何“真正的擺動空間”,您需要查看likeButton元素上的屬性。為此,您可以使用 getAttribute()。
let likes = 0;
setInterval(() => {
const likeButton = document.querySelector('svg[aria-label="Like"]');
const nextButton = document.querySelector('svg[aria-label="Next"]');
if (likeButton.getAttribute("aria-label") === "Like")) {
likeButton.parentNode.parentElement.click();
likes ;
console.log(`You've liked ${likes} post(s)`);
}
nextButton.parentElement.parentNode.click();
}, 20000);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/485356.html
標籤:javascript
上一篇:如何在動態生成的按鈕中選擇跨度?
下一篇:陣列最后一個值的字串移除器
