我正在尝试使用puppeteer.js自动化浏览器,并且我正在单击模式和滚动中的一长串div中的一个div。我循环遍历要单击的div,然后按顺序单击它们。似乎如果我给浏览器足够的时间,它会滚动到正确的位置,然后单击div。
此示例有效:
users_names[14].click().catch(function(error){console.log("some error ", "position", error)});
await delay(2000);
users_names[45].click().catch(function(error){console.log("some error ", "position", error)});
await delay(2000);
users_names[54].click().catch(function(error){console.log("some error ", "position", error)});
await delay(2000);
users_names[0].click().catch(function(error){console.log("some error ", "position", error)});
await delay(2000);
users_names[29].click().catch(function(error){console.log("some error ", "position", error)});但是很明显,如果我想点击不同的元素,我不能硬编码它们。我试过这样做,但是滚动和点击元素的速度太快了。
_.forEach(namesToSend, function(n) {
var position = memberOrder.indexOf(n)
console.log('position: ', position)
if(position != -1)
users_names[position].click().catch(function(error){console.log("some error ", position, error)});
});我怎么才能让这个循环慢下来,让它在继续之前等待click事件?
发布于 2020-03-02 00:05:55
THe单击方法返回一个promise,因此在ForEach中它将无法工作。您需要像这样使用for..of循环
for (const name of namesToSend) {
try {
var position = memberOrder.indexOf(name);
if (position != -1) await users_names[position].click();
} catch (error) {
console.log("some error ", position, error);
}
}https://stackoverflow.com/questions/60476770
复制相似问题