木偶不等待超时

时间:2018-06-28 19:12:56

标签: javascript node.js puppeteer

我有一个包含公司名称列表的页面。此列表最初受到200个结果的限制,但是有一个链接可以使该限制增加一倍。每单击一次,加载时间就会增加几分钟。

我正在使用以下代码。

/**
 * @param {object} page - a puppeteer page object
 * @param {number} by - how many times I need to click on the link
 */
async function multiply(page, by = 5) {
    for (let i = 0; i < by; i++) {
        await Promise.all([
            // Manual clicking of the link
            page.$eval('p a', el => el.click()),

            // set a timeout of 8 minutes
            page.waitForNavigation(480000) 
        ]).catch(e => console.log(e));
    }
}

我希望超时为8分钟,但出现以下错误:

Error: Navigation Timeout Exceeded: 30000ms exceeded

我还尝试了之前点击链接。然后,我尝试使用page.waitFor(i ** 2 * 10000)手动等待定义的超时-但没有运气。等待选择器进入html也不起作用。

我没有使用page.click('p a'),因为它被确认为错误here

您可能想看看我的项目中的另一个already-solved question,它更详细地描述了我的用例。

如果您想更仔细地看,可以通过单击bitbucket.org/ytNewskews克隆完整的存储库。

1 个答案:

答案 0 :(得分:1)

page.waitForNavigation(options)需要一个具有以下属性的对象:

   // set a timeout of 8 minutes
   page.waitForNavigation({timeout: 480000})

默认值为30000ms。可以使用page.setDefaultNavigationTimeout(timeout)方法更改默认值。

发件人:Puppeteer API