как отладить страницу, которая не открывается (пустая страница) - PullRequest
0 голосов
/ 27 сентября 2018

вот как я открываю вкладки

    await page.goto( url , {timeout: 90000} )
        .catch(function(error){
            page.close();

        }
    );

я открываю несколько страниц в одном браузере в цикле, одна страница частиц (первая открытая вкладка) не открывается в первый раз (первый цикл)и я получаю ошибку тайм-аута, она работает в следующем цикле просто отлично ... я попытался сделать снимок экрана и это просто пустая страница .... У меня тот же код работает нормально на

, так что мой вопросЕсть ли способ собрать информацию о том, почему страница не открывается?это поздний ответ или что-то еще?

1 Ответ

0 голосов
/ 28 сентября 2018

Документация Puppeteer включает советы по отладке , список которых:

  1. Отключение безголового режима с помощью headless : false, чтобы увидеть, что отображает браузер:

    const browser = await puppeteer.launch( { headless : false } );
    
  2. Замедление операций Puppeteer с помощью опции slowMo, чтобы помочь увидеть, что происходит:

    const browser = await puppeteer.launch({
        headless : false,
        slowMo   : 200    // slow down by 200ms
    });
    
  3. Захват вывода консоли:

    page.on( 'console', msg => { console.log( 'Page Log from Evaluate:', msg.text() ); } );
    
    await page.evaluate( () => { console.log( 'Current URL:', location.href ); } );
    
  4. Остановка выполнения теста и использование отладчика в браузере:

    • Использование devtools : true при запуске Puppeteer:

      const browser = await puppeteer.launch( { devtools : true } );
      
    • Изменение времени ожидания теста по умолчанию:

      jest.setTimeout( 100000 );                 // Jest
      jasmine.DEFAULT_TIMEOUT_INTERVAL = 100000; // Jasmine
      this.timeout( 100000 );                    // Mocha
      
    • Добавление оператора оценки с debugger внутри или добавление debugger в существующий оператор оценки:

      await page.evaluate( () => { debugger; } );
      
  5. Включение подробного ведения журнала:

    # Basic verbose logging
    env DEBUG="puppeteer:*" node script.js
    
    # Debug output can be enabled/disabled by namespace
    env DEBUG="puppeteer:protocol" node script.js # protocol connection messages
    env DEBUG="puppeteer:session" node script.js # protocol session messages (protocol messages to targets)
    
    # Protocol traffic can be rather noisy. This example filters out all Network domain messages
    env DEBUG="puppeteer:session" env DEBUG_COLORS=true node script.js 2>&1 | grep -v '"Network'
    
  6. Отладка кода Puppeteer (Node.js) с использованием ndb или npx :

    • npm install -g ndb
    • Добавление debugger в код вашего кукловода (Node.js)
    • ndb jest или ndb mocha (или npx ndb jest / npx ndb mocha)

Возможно, вы также захотите ознакомиться с документацией Puppeteer относительно обработки ошибок :

Для определенных типов ошибок Puppeteer использует определенные классы ошибок.Эти классы доступны через require('puppeteer/Errors').

Список поддерживаемых классов:

Пример использования:

const { TimeoutError } = require( 'puppeteer/Errors' );

// ...

try {

    await page.waitForSelector( '.foo' );

} catch ( e ) {

    if ( e instanceof TimeoutError ) {
        // Handle TimeoutError here ...
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...