延迟重复的javascript代码

延迟重复的javascript代码,javascript,facebook,instagram,sleep,Javascript,Facebook,Instagram,Sleep,长话短说,我正在尝试将我正在使用的社交网站(Facebook、Instagram等)上的一些操作自动化。例如,添加朋友、喜欢帖子等等,比如在几秒钟延迟后单击每个Follow按钮,如中所示 我想在浏览器控制台中使用以下脚本(不工作,在Chrome中测试): var clikker=document.getElementsByClassName(“qv64e”gexxb“4tgw8”njrw0”); 对于(var i=0;i设置超时(解析,时间)); } 睡眠(5000)。然后(()=>{ clik

长话短说,我正在尝试将我正在使用的社交网站(Facebook、Instagram等)上的一些操作自动化。例如,添加朋友、喜欢帖子等等,比如在几秒钟延迟后单击每个Follow按钮,如中所示

我想在浏览器控制台中使用以下脚本(不工作,在Chrome中测试):

var clikker=document.getElementsByClassName(“qv64e”gexxb“4tgw8”njrw0”);
对于(var i=0;i设置超时(解析,时间));
}
睡眠(5000)。然后(()=>{
clikker[i]。单击();
});
}
我想这应该行得通。我们高度赞赏为完成任务而做出的任何改进


谢谢。

您可以尝试将for循环包装到if语句中

if(clikker.length){
console.log(clikker);

    for(var i=0;i<clikker.length;i++){

        function sleep (time) {
            return new Promise((resolve) => setTimeout(resolve, time));
        }

        sleep(5000).then(() => {
        clikker[i].click();

        });
    }
}
if(clikker.length){
控制台日志(clikker);
对于(var i=0;i设置超时(解析,时间));
}
睡眠(5000)。然后(()=>{
clikker[i]。单击();
});
}
}

可能是数组返回0或未定义。始终检查数组的内容。

在异步函数处理程序中使用变量
i
的闭包。在调用解析处理程序时,循环已经完成,
i
的值是clicker的长度

您可以使用
NodeList
forEach
方法,该方法是
querySelectorAll
的返回类型,然后使用
setTimeout
(无需承诺):


请尝试使用
(让i=0
等你知道它会一直中断吗?类
\u qv64e
\u gexxb
\u 4tgw8
\u njrw0
会改变。Facebook也不允许你这么做。你必须使用API。为什么有人想要自动跟踪、添加朋友或喜欢的帖子?更不用说它不允许你这么做了wed,wizkid已经发表了评论。我的意思是,如果你认识朋友,或者你真的想与他们联系,那么朋友是手动选择的。你不会想要大量的朋友列表,对吧?那会很奇怪。如果不允许的话,他们不会建议大量的“朋友”跟随。此外,谷歌和Mozilla会禁止扩展at可以在Chrome和Firefox中做到这一点。为什么谷歌和Mozilla会因为违反Facebook的服务条款而禁止扩展?不,问题是当
clickker[i]时,click()
被称为循环完成,i的值是clickker。因此
clickker[i]
的长度没有定义。下面的代码
用于(var i=0;iconsole.log(i),20);}
将记录5,5次。但是当您在创建时传递一个闭包为
i
的函数时,它将记录(var i=0;i_=>console.log(newI))(i),20)的0,1,2,3,4:
}
最好的方法是避免使用异步处理的循环,并使用Array.prototype方法。对于Instagram,我在日志“POST net::ERR_BLOCKED_BY_CLIENT”中得到了这个错误,每次脚本都会触发。但是,这似乎工作得很好(尽管它一次单击了所有按钮)“var clikker=document.getElementsByClassName(风险值i=0;i)
if(clikker.length){
console.log(clikker);

    for(var i=0;i<clikker.length;i++){

        function sleep (time) {
            return new Promise((resolve) => setTimeout(resolve, time));
        }

        sleep(5000).then(() => {
        clikker[i].click();

        });
    }
}
document.querySelectorAll('_qv64e _gexxb _4tgw8 _njrw0')
.forEach(
  (element,index)=>
    setTimout(
      _=>element.click(),
      (index+1)*5000
    )
)