Как очистить историю (Очистить данные о просмотре) В Node.js Puppeteer Headless = false Chromium browser - PullRequest
1 голос
/ 26 апреля 2019

Я пытаюсь удалить историю в браузере без заголовка = false с кукловодом node.js, используя приведенный ниже код, но не работает методом.

await page.goto('chrome://settings/clearBrowserData');
await page.keyboard.down('Enter');

Второй код

await page.keyboard.down('ControlLeft');
await page.keyboard.down('ShiftLeft');
await page.keyboard.down('Delete');
await page.keyboard.down('Enter');

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

1 Ответ

0 голосов
/ 26 апреля 2019

Невозможно перейти на страницы настроек браузера (chrome://...) таким образом.

У вас есть два варианта:

  1. Использовать окно инкогнито (называемое контекстом вpuppeteer)
  2. Используйте команду из протокола Chrome DevTools для очистки истории.
  3. Перезапустите браузер

Вариант 1. Использование окна в режиме инкогнито

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

Вы создаете контекст, вызывая browser.createIncognitoBrowserContext().Цитата из документов :

Создает новый контекст браузера в режиме инкогнито.Это не будет использовать куки / кеш с другими контекстами браузера.

Пример

const context = await browser.createIncognitoBrowserContext();
const page = await context.newPage();

// Execute your code
await page.goto('...');
// ...

await context.close(); // clear history

Этот пример создаст новое окно браузера инкогнито и откроетстраница внутри.Оттуда вы можете использовать дескриптор page, как обычно.

Чтобы очистить любые куки или историю внутри, просто закройте контекст с помощью context.close().


Вариант 2: Используйте протокол Chrome DevTools для очистки истории

Если вы не можете полагаться на использование контекста (поскольку они не поддерживаются при использовании расширений), вы можете использовать Протокол Chrome DevTools для очистки историибраузера.Он имеет функции, которые не реализованы в кукловоде для сброса файлов cookie и кэша.Вы можете напрямую использовать функции из протокола Chrome DevTools, используя CDPSession .

Пример

const client = await page.target().createCDPSession();
await client.send('Network.clearBrowserCookies');
await client.send('Network.clearBrowserCache');

Это заставит браузер очиститьфайлы cookie и кеш, напрямую вызывая Network.clearBrowserCookies и Network.clearBrowserCache.


Вариант 3: Перезапустите браузер

Если обаподходы неосуществимы, вы всегда можете перезапустить браузер, закрыв старый экземпляр и создав новый.Это удалит все сохраненные данные.

...