Может ли браузер стать безголовым в середине исполнения, когда он был запущен нормально, или наоборот? - PullRequest
1 голос
/ 23 апреля 2019

Я хочу мгновенно запустить браузер Chrome без каких-либо действий, выполнить некоторые автоматические операции, а затем включить его, прежде чем выполнять остальные действия.

Можно ли это сделать с помощью Puppeteer, и если да, можете ли вы сказать мне, как?И если это не так, есть ли какая-либо другая структура или библиотека для автоматизации браузера, которая может сделать это?

До сих пор я пробовал следующее, но это не сработало.

const browser = await puppeteer.launch({'headless': false});
browser.headless = true;
const page = await browser.newPage();
await page.goto('https://news.ycombinator.com', {waitUntil: 'networkidle2'});
await page.pdf({path: 'hn.pdf', format: 'A4'});

1 Ответ

2 голосов
/ 23 апреля 2019

Краткий ответ: это невозможно

Chrome позволяет запускать браузер только в режиме без головы или без головы .Вы должны указать его при запуске браузера, и переключение во время выполнения невозможно.

Что возможно, так это запустить второй браузер и повторно использовать файлы cookie (и любые другие данные) из первого браузера.

Длинный ответ

Можно предположить, что вы можете просто повторно использовать каталог данных при вызове puppeteer.launch, но в настоящее время это невозможно из-за множества ошибок ( # 1268 , # 1270 в репо кукловода).

Таким образом, наилучшим подходом является сохранение любых файлов cookie или данных локального хранилища, которые вам нужныделиться между экземплярами браузера и восстанавливать данные при запуске браузера.Затем вы посещаете веб-сайт во второй раз.Имейте в виду, что любое состояние, которое имеет веб-сайт с точки зрения переменной JavaScript, будет потеряно при повторном просмотре страницы.

Процесс

Подводя итог, весь процесс должен выглядеть следующим образом (или наоборот)без головы до головы):

  • Сканирование в режиме без головы до тех пор, пока вы не захотите переключить режим
  • Сериализация файлов cookie
  • Запуск или повторное использованиевторой браузер (в автономном режиме)
  • Восстановление файлов cookie
  • Пересмотреть страницу
  • Продолжить сканирование
...