.click () в сломанном соединении он останавливает цикл в puppeteer

Я делаю рутину с node и puppeteer для testear серия urls, который я перемещаю в array. У каждого Веба есть галерея, которая происходит кликая на кнопке .button--confirm, последний этих кнопок пересылает в другую страницу. Случай состоит в том, что, когда соединение сломано, рутина задерживается, и остается "замороженной" на странице ошибки (я это конфигурирую как headless: 0 для доказательств), и я хочу, чтобы в этом случае я остался со следующим url array. Это важная часть моего кода:

for (i = 0; i < misurl.length; i++) {
    console.log(i);
    await page.goto(misurl[i], { timeout: 2000 })
    const pasos = await page.evaluate(() => {
        const links = Array.from(document.querySelectorAll('.box'))
        return links.length;
    })

    for (var i = 0; i < pasos; i++) {
        const btn = await Promise.race([
            page.waitForSelector('.button--preview'),
            page.waitForSelector('.button--confirm')
        ]);
        await btn.click();
    }

    await page.waitFor(1000)
}

Я попытался завертывать click в обещание, но "реши" весь цикл вместо того, чтобы происходить со следующим url. как он мог бы делать это? Большое спасибо:

for (i = 0; i < misurl.length; i++) {
    console.log(i);
    await page.goto(misurl[i], { timeout: 2000 })
    const pasos = await page.evaluate(() => {
        const links = Array.from(document.querySelectorAll('.box'))
        return links.length;
    })

    for (var i = 0; i < pasos; i++) {
        const btn = await Promise.race([
            page.waitForSelector('.button--preview'),
            page.waitForSelector('.button--confirm')
        ]);

        await new Promise((resolve, reject) => {
            btn.click();
            page.on('requestfailed', err => { console.log(err);
                reject() });
            resolve()
        });
    }
    await page.waitFor(1000)
}
1
задан 20.03.2019, 19:09
1 ответ

Проблема состояла в том, что, из-за ошибки считая шаги, когда страница не грузила, puppeteer он продолжал ждать кнопку, чтобы нажимать.

0
ответ дан 02.12.2019, 05:22