Я использую кукловод для автоматизации загрузки .csv
с веб-сайта, обращенного к человеку.
Файл, который я хочу, загружается с уникально сгенерированного URL, поэтому я использую события page.click()
для запуска загрузки.У меня проблема в том, что файл загружается как всплывающая загрузка с заголовком Content-Disposition: attachment
, и я не могу понять, как перехватить данные.
Я попытался установить обработчик событий для browser.on('targetcreated'...
, который успешно срабатывает при загрузке файла, однако в этом обработчике событий я не могу получить много информации (или данных), потому что мои попытки вОшибка получения страницы новой цели (let newpage = await target.page();
) с
(node:27389) UnhandledPromiseRejectionWarning: Error: Protocol error (Page.enable): Target closed.
Я думаю, что это из-за недолгой природы новой цели (это небольшой файл), и обещание не разрешается доцель закрыта.
Я также пробовал такие вещи, как обработчики для response
события и перехвата запроса, но, поскольку они ограничены областью, и технически открывается новая страница, они, похоже, не являютсяправильный курс действий.Кажется, что мне нужно, чтобы иметь возможность установить глобальные обработчики событий стиля для браузера вместо страницы или выяснить, почему я не могу получить страницу от моей новой цели.Любая помощь приветствуется.Ниже приведена копия созданного целевого события, созданного на случай, если
Target {
_targetInfo:
{ targetId: '8E6B6B77483AE2F37E7DDD51739B220E',
type: 'page',
title: '',
url: 'https://example.com/cca21744-72f0-49b3-a048-12348d1bd97c/exports/af81008a-0547-4e62-aa28-a3228bc2b785/outputResource',
attached: false,
openerId: 'A66C8D5FD6206E6FE55139B2440B1CE5',
browserContextId: 'C2D9840857DC03C38B1114F9008F3638' },
_browserContext:
BrowserContext {
_events: {},
_eventsCount: 0,
_maxListeners: undefined,
_connection:
Connection {
_events: [Object],
_eventsCount: 4,
_maxListeners: undefined,
_url: 'ws://127.0.0.1:54439/devtools/browser/ebf728ce-2bb2-4d20-9c3f-4868ae7768c3',
_lastId: 126,
_callbacks: Map {},
_delay: 5.240825308449115,
_transport: [WebSocketTransport],
_sessions: [Map],
_closed: false },
_browser:
Browser {
_events: [Object],
_eventsCount: 1,
_maxListeners: undefined,
_ignoreHTTPSErrors: false,
_defaultViewport: [Object],
_process: [ChildProcess],
_screenshotTaskQueue: [TaskQueue],
_connection: [Connection],
_closeCallback: [Function: gracefullyCloseChrome],
_defaultContext: [Circular],
_contexts: Map {},
_targets: [Map] },
_id: null },
_targetId: '8E6B6B77483AE2F37E7DDD51739B220E',
_sessionFactory: [Function],
_ignoreHTTPSErrors: false,
_defaultViewport: { width: 800, height: 600 },
_screenshotTaskQueue: TaskQueue { _chain: Promise { undefined } },
_pagePromise: null,
_initializedCallback: [Function],
_initializedPromise: Promise { true },
_closedCallback: [Function],
_isClosedPromise: Promise { <pending> },
_isInitialized: true }