延迟单击网页上的所有类似按钮
Click on all similar buttons on a web page with a delay
我正在使用一个数据库应用程序,有时我必须在网页上单击数十个甚至数百个相同的按钮,所以我想我可以节省一些时间并 运行 检查中的脚本 - > Crome 浏览器的控制台 window 为我完成这项工作。我找到了一个可以很好地完成工作的脚本,但是数据库应用程序在前 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 发现错误:"Cannot read property 'click' of undefined"。不会记录后续错误
在 SetTimeout 函数中调用 inputs[i].click() 似乎有一些问题,因为如果我 运行 它在一个简单的 for 循环中工作得很好:
javascript:var inputs = document.getElementsByClassName('BUTTON CLASS HERE');
for(var i=0; i<inputs.length;i++) {
inputs[i].click();
}
我做错了什么?
谢谢
inputs[inputs.length]
(在您的第一次迭代中,i === inputs.length
)将始终为 undefined
- 类似数组的对象在 Javascript 中的索引为零,因此当 [=遇到 14=],会抛出错误。
要么将 i
初始化为 inputs.length - 1
,或者您可能会发现使用原始代码更容易,只需 await
一个 Promise
,它会在 100 毫秒左右后解析:
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();
}
})();
我正在使用一个数据库应用程序,有时我必须在网页上单击数十个甚至数百个相同的按钮,所以我想我可以节省一些时间并 运行 检查中的脚本 - > Crome 浏览器的控制台 window 为我完成这项工作。我找到了一个可以很好地完成工作的脚本,但是数据库应用程序在前 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 发现错误:"Cannot read property 'click' of undefined"。不会记录后续错误
在 SetTimeout 函数中调用 inputs[i].click() 似乎有一些问题,因为如果我 运行 它在一个简单的 for 循环中工作得很好:
javascript:var inputs = document.getElementsByClassName('BUTTON CLASS HERE');
for(var i=0; i<inputs.length;i++) {
inputs[i].click();
}
我做错了什么? 谢谢
inputs[inputs.length]
(在您的第一次迭代中,i === inputs.length
)将始终为 undefined
- 类似数组的对象在 Javascript 中的索引为零,因此当 [=遇到 14=],会抛出错误。
要么将 i
初始化为 inputs.length - 1
,或者您可能会发现使用原始代码更容易,只需 await
一个 Promise
,它会在 100 毫秒左右后解析:
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();
}
})();