Перезагрузка страницы в кукловоде, если код ответа не действителен - PullRequest
0 голосов
/ 05 октября 2019

Так что я знаю, что могу проверить код ответа после вызова page.goto () с помощью функции response.status (), но моя программа создана для того, чтобы очищать и выполнять множество действий на веб-сайте. Теперь некоторые веб-сайты загружаются или случайным образом возвращают ошибку 500 или 503 вместо того, чтобы обслуживать веб-страницу.

Итак, что я хочу сделать, для каждого запроса навигации, если код ответа возвращает ошибку 500 или 503, я хочу перезагрузить страницу. Я взглянул на setRequestInterception, но он срабатывает до того, как сделан запрос. setResponseInterception еще не существует (но я вижу его как потенциальную функцию в github). Это было бы просто так с setResponseInterception:

  1. Проверьте код ответа
  2. Если 500 или 503, перезагрузите страницу

Мне интересно, могу ли ясделайте что-нибудь подобное прямо сейчас, используя setRequestInterception. Или мне, возможно, придется индивидуально отслеживать каждый навигационный вызов и проверять, возвращает ли он действительный код, прежде чем продолжить.

1 Ответ

0 голосов
/ 05 октября 2019

вы не предоставили ни одного примера кода, поэтому я не знаю, какова ваша структура кода, но вот 1 способ сделать это

async function init_puppeteer( test  ) {


    var browser = await puppeteer.launch({headless: false    ,  args: ['--no-sandbox', '--disable-setuid-sandbox' , ]});

    let success = false ;
    while(!success)
    {
       success = await open_page( browser , link );
    }
    browser.close();
}


async function open_page( browser , link ){

    try 
    {
        const page = await browser.newPage();
        await page.goto( link ).catch(function (error) {  throw new Error('TimeoutBrows');  });

        // also you can check status code and throw error if its 500 or 503

        return true ; 
    }
    catch(e){
        return false; 
    }
}
...