延迟单击网页上的所有类似按钮

时间:2018-07-22 21:23:57

标签: javascript google-chrome button click

我正在使用数据库应用程序,有时我必须单击网页上的数十个甚至数百个相同的按钮,所以我想节省一些时间并在Crome的Inspect-> Console窗口中运行脚本浏览器为我完成工作。我发现一个脚本可以很好地完成工作,但是在最初的10-20次单击后,数据库应用程序挂起,因此我与开发人员进行了交谈,他们建议两次单击之间应稍加延迟。他们不确定多少,所以我需要尝试一下。因此,到目前为止,我正在尝试运行以下脚本:

javascript:var inputs = document.getElementsByClassName('BUTTON CLASS HERE');
$(function theLoop (i) {
setTimeout(function () {
inputs[i].click();
if (--i) {          
  theLoop(i);       
}
}, 100);
})(inputs.length);

它什么都不做,但是给我以下错误信息: gE02JAse0g9.js:60 ErrorUtils捕获到错误:“无法读取未定义的属性'click'”。随后的错误将不会被记录

调用SetTimeout函数中的input [i] .click()似乎存在一些问题,因为如果我在如下所示的简单for循环中运行它,它就可以正常工作:

javascript:var inputs = document.getElementsByClassName('BUTTON CLASS HERE'); 
for(var i=0; i<inputs.length;i++) { 
inputs[i].click();
}

我在做什么错? 谢谢。

1 个答案:

答案 0 :(得分:0)

inputs[inputs.length](在您的第一次迭代中,i === inputs.length)将始终为undefined-类数组对象在Javascript中为零索引,因此遇到inputs[i].click();时,会引发错误。

或者将i初始化为inputs.length - 1,或者您可能会发现更容易使用原始代码,而只需await一个Promise即可在100毫秒左右后解析: / p>

const resolveAfter100MS = () => new Promise(res => setTimeout(res, 100));
(async () => {
  var inputs = document.getElementsByClassName('_42ft _4jy0'); 
  for(var i=0; i<inputs.length;i++) { 
    inputs[i].click();
    await resolveAfter100MS();
  }
})();