【发布时间】:2020-06-14 00:52:15
【问题描述】:
我正在尝试使用 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)});
});
我怎样才能让这个循环变慢,让它在继续之前等待点击事件?
【问题讨论】:
-
我提供的答案是否解决了您的问题?
标签: javascript node.js asynchronous puppeteer