【问题标题】:Puppeteer: TimeoutError: waiting for selectorPuppeteer:TimeoutError:等待选择器
【发布时间】:2020-10-13 15:34:36
【问题描述】:

我正在等待选择器加载到页面上,但我还需要处理出现超时的情况。

目前,我的脚本停止执行并且不会继续。如何处理超时错误情况并继续执行。

下面是我的相关代码。

    const newPagePromise = new Promise(res => browser.on('targetcreated', target => res(target.page())));
    for(const dataWorkSheet of dataWorkSheetsArray) {
       try{
         await page.evaluate(async () => {
          await $('.export--popup a').click();
         });
         const exportPopup = await newPagePromise;
         await Promise.all([
          await exportPopup.click('#data-0'),
          await exportPopup.waitForSelector('.cLink'),
         ]);
       } catch(e) {

       }
    }

我如何确保即使在执行waitForSelector 时出现超时错误,我的循环也会继续?

【问题讨论】:

    标签: javascript node.js puppeteer


    【解决方案1】:

    你可以玩转承诺:

    await Promise.all([
      await exportPopup.click('#data-0'),
      await exportPopup.waitForSelector('.cLink').catch(error => console.log('failed to wait 
     for the selector'),
     ]);
    

    【讨论】:

      【解决方案2】:

      也许您可以考虑增加一些时间来等待元素,以便脚本继续运行?

      await exportPopup.waitForSelector('.cLink', {timeout: 120000})
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-06-30
        • 1970-01-01
        • 2019-07-07
        • 1970-01-01
        • 2012-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多