簡體   English   中英

console.log() 沒有在間隔內記錄到控制台

[英]console.log() not logging to console inside interval

我瀏覽了很多帖子,似乎找不到我的問題的答案。

我的間隔中有一個 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);

從我在 Instagram 上看過的幾篇帖子的inspect source來看,點贊按鈕似乎有兩種狀態。

  • <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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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