在所有代码执行之前,Puppeteer关闭页面

时间:2018-06-01 17:43:59

标签: mocha puppeteer google-chrome-headless

我正在使用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循环中的所有控制台日志都会正确显示。

0 个答案:

没有答案