延迟重复的javascript代码

时间:2018-02-01 04:18:12

标签: javascript facebook instagram sleep

长话短说,我正试图在我正在使用的社交网站(Facebook,Instagram等)上自动执行某些操作。例如,添加朋友,喜欢帖子等,例如在this picture

中延迟几秒后点击每个关注按钮

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

var clikker = document.getElementsByClassName('_qv64e _gexxb _4tgw8 _njrw0');

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

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

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

    });
}

我认为这应该有效。完成任何改进都非常受欢迎。

谢谢。

2 个答案:

答案 0 :(得分:0)

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

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

        });
    }
}

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

答案 1 :(得分:0)

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

您可以使用forEach的{​​{1}}方法作为NodeList的返回类型,然后使用querySelectorAll(无需承诺):

setTimeout