Как поймать закачку с драматургом? - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь загрузить файл с веб-сайта, используя Playwright . Кнопка, которая запускает загрузку, выполняет некоторое js, а затем начинается загрузка.

Нажатие кнопки с помощью функции .click запускает загрузку, но показывает ошибку: Failed - Ошибка загрузки .

enter image description here

Я пытался использовать протокол devtools Page.setDownloadBehavior, но, похоже, это ничего не делает.

    const playwright = require("playwright");
    const { /*chromium,*/ devices } = require("playwright");
    const iPhone = devices["iPad (gen 7) landscape"];

    (async () => {
        const my_chromium = playwright["chromium"];
        const browser = await my_chromium.launch({ headless: false });
        const context = await browser.newContext({
            viewport: iPhone.viewport,
            userAgent: iPhone.userAgent
        });
        const page = await context.newPage();
        const client = await browser.pageTarget(page).createCDPSession();
        console.log(client);
        await client.send("Page.setDownloadBehavior", {
            behavior: "allow",
            downloadPath: "C:/in"
        });
        //...and so on
        await page.click("#download-button");
        browser.close();
    })();

Полный файл здесь

Есть предложение для лучшей загрузки API в Драматург , но я могу не могу найти текущий API. Было высказано предположение, что что-то связанное с событием downloadWillBegin будет полезным, но я не знаю, как получить к нему доступ от Playwright.

Я открыт для предложения что вместо этого я должен использовать Puppeteer, но я перешел к драматургу, потому что не мог понять, как загрузить файл с помощью Pupeteer, и проблема, связанная с ним, предполагала, что вся команда перешла на Playwright .

1 Ответ

0 голосов
/ 03 марта 2020

Смущающе, я закрывал браузер до начала загрузки.

Оказывается, ошибка загрузки была вызвана разделом client. Однако это означает, что я не могу контролировать, где файл сохраняется.

Загрузка работает, когда headless: false, но не когда headless: true.

Если у кого-то есть лучший ответ, то ' было бы здорово!

...