Отключить безголовый режим
Иногда полезно посмотреть, что отображает браузер. Вместо запуска в безголовом режиме запустите полную версию браузера, используя headless: false
:
const browser = await puppeteer.launch({ headless: false });
Замедли это
Параметр slowMo
замедляет операции Puppeteer на указанное количество миллисекунд. Это еще один способ помочь увидеть, что происходит.
const browser = await puppeteer.launch({
headless: false,
slowMo: 250, // slow down by 250ms
});
Захват вывода консоли
Вы можете прослушать событие console
. Это также удобно при отладке кода в page.evaluate()
:
page.on('console', (msg) => console.log('PAGE LOG:', msg.text()));
await page.evaluate(() => console.log(`url is ${location.href}`));
Используйте отладчик в браузере кода приложения
Существует два контекста выполнения: node.js, на котором выполняется тестовый код, и браузер, выполняющий код тестируемого приложения. Это позволяет отлаживать код в браузере кода приложения; код внутри evaluate()
.
Используйте {devtools: true}
при запуске Puppeteer.
const browser = await puppeteer.launch({ devtools: true });
Изменить тайм-аут теста по умолчанию
- шутка:
jest.setTimeout(100000);
- жасмин:
jasmine.DEFAULT_TIMEOUT_INTERVAL = 100000;
- мокко:
this.timeout(100000);
(не забудьте изменить test, чтобы использовать функцию, а не '=>' )
Добавьте оператор оценки с отладчиком внутри или добавьте отладчик к существующему оператору оценки:
await page.evaluate(() => {
debugger;
});
Затем тест прекращает выполнение в приведенном выше операторе оценки, и Chromium останавливается в режиме отладки.
Используйте отладчик в node.js
Это позволяет отлаживать тестовый код. Например, вы можете перейти к await page.click()
в скрипте node.js и увидеть, как происходит щелчок в браузере кода приложения.
Вы не можете запустить await page.click()
в консоли DevTools из-за ошибки Chromium 833928 . Поэтому, если вы хотите что-то попробовать, вам нужно добавить это в свой тестовый файл.
- Добавить отладчик; для вашего теста, например:
javascript debugger; await page.click('a[target=_blank]');
- Установите для параметра Headless значение false.
- Запустите node
--inspect-brk
, например,node --inspect-brk node_modules/.bin/jest tests
. - В Chrome откройте
chrome://inspect/#devices
и нажмитеinspect
. - В открывшемся браузере тестов введите
F8
, чтобы возобновить выполнение теста. - Теперь ваш отладчик активирован, и вы можете выполнять отладку в тестовом браузере.
Включить подробное ведение журнала
Внутренний трафик протокола DevTools регистрируется с помощью модуля отладки в пространстве имен Puppeteer.
# Basic verbose logging
env DEBUG="puppeteer:*" node script.js
# Protocol traffic can be rather noisy. This example filters out all Network
# domain messages
env DEBUG="puppeteer:*" env DEBUG_COLORS=true node script.js 2>&1 | grep -v '"Network'
Отладка кода Puppeteer (узла)
Используйте НБД :
-
npm install -g ndb
(или используйте npx ). - Добавьте отладчик в свой код Puppeteer (узел).
- Добавьте
ndb
(илиnpx ndb
) перед тестовой командой. Например:ndb jest
илиndb mocha
(илиnpx ndb jest
/npx ndb mocha
). - отлаживайте тест внутри Chrome как настоящий босс!