我正在使用Puppeteer& amp;摩卡。我有一个测试,它遍历页面上的元素并使用适当的页面元素删除它们。
代码希望按预期执行,但浏览器似乎过早关闭。如果我删除了Chromium的无头标记,我可以看到一些项目元素被点击并删除,但浏览器在点击并删除所有元素之前关闭。
我的测试:
it('should remove all projects', async function () {
await login()
const projects = await page.evaluate((selector) => {
let elements = Array.from(document.querySelectorAll(selector)).map(el => { return '#' + el.getAttribute('id') })
return elements;
}, "[id^=project-link-]")
for (var projectId of projects) {
try {
console.log(`project ID ${projectId}`)
await page.click(projectId)
await page.waitFor("#project_delete", { timeout: 5000 });
await page.click('#project_delete')
await page.waitFor("#project_delete_confirm", { timeout: 5000 });
await page.click('#project_delete_confirm')
}
catch(e) {
console.log(`error: ${e}`)
}
}
})
我尝试过添加大量超时,但这似乎没有帮助。我只是习惯async/ await
行为,这可能是我理解中的一个根本缺陷。例如,for of
循环中的所有控制台日志都会正确显示。