我需要一种方法来增加单击页面内元素之间的延迟。评估功能
下面是我尝试的方法,它不起作用
const result = await page.evaluate(async () => {
let variants = document.querySelectorAll(".item-sku-image a");
variants.forEach(async variant => {
await new Promise(function(resolve) {
setTimeout(resolve, 1000)
});
await variant.click()
});
return data
});
更新:
下面的for循环仅对一个元素有效 当我尝试在其中使用另一个for循环-太疯狂了
const variants = [...document.querySelectorAll(".item-sku-image a")]; // Turn nodelist into an array
const sizes = [...document.querySelectorAll(".item-sku-size a")]; // Turn nodelist into an array
for (let variant of variants){
// wait one second
await new Promise(function(resolve) {setTimeout(resolve, 1000)});
await variant.click()
for (let size of sizes){
// wait one second
await new Promise(function(resolve) {setTimeout(resolve, 1000)});
await size.click()
}
}
答案 0 :(得分:1)
.forEach
不能与诺言或async...await
一样使用。
改为使用for..of
。
const variants = [...document.querySelectorAll(".item-sku-image a")]; // Turn nodelist into an array
for (let variant of variants){
// wait one second
await new Promise(function(resolve) {setTimeout(resolve, 1000)});
await variant.click()
}
易于阅读,理解和实施。
以下是一些参考资料: