木偶戏挂在page.click()上

时间:2019-11-21 13:13:13

标签: javascript node.js puppeteer

我有以下代码,但有时它挂在page.click(clickSelector)上,我必须重新启动该过程。我正在尝试确保它可以在后台运行而不会受到干扰。

let clickAndWaitForTarget = async (clickSelector, page, browser) => {
  try {
    await page.waitForSelector(clickSelector, { timeout: 60000 });
  } catch (error) {
    console.log('SELECTOR ' + clickSelector + ' NOT FOUND IN 60 SECONDS');
    return null;
  }
  const pageTarget = page.target();
  console.log("SELECTOR FOUND! LET'S ROLL...");
  await page.click(clickSelector); // HANGING HERE
  console.log('CLICKED IT');
  try {
    const newTarget = await browser.waitForTarget(
      target => target.opener() === pageTarget,
      { timeout: 45000 }
    );
    const newPage = await newTarget.page();
    return newPage;
  } catch {
    return null;
  }
};

有什么想法吗? 我正在使用Puppeteer 2.0.0版

1 个答案:

答案 0 :(得分:0)

您可以尝试这个。

await Promise.all([
  page.waitForNavigation(waitOptions),
  page.click(selector, clickOptions),
]);

我认为这很有帮助。