Есть ли способ загрузить файл в React Dropzone с помощью Puppeteer? - PullRequest
3 голосов
/ 05 февраля 2020

Я попробовал несколько предложений в Интернете, но ни одно из них не сработало.
В настоящее время я пытаюсь это:

  await page.goto('http://localhost:3000/');
  await page.waitForSelector('input[type=file]');
  const fileInput  = await page.$('input[type=file]');
  await fileInput.uploadFile("file.png");  

Это не работает (или ничего не делает).
Есть ли способ делать это?

1 Ответ

3 голосов
/ 08 февраля 2020

Кажется, что дропзоне нужно немного пу sh. Вы могли бы вызвать change, чтобы в рабочей зоне был обнаружен новый файл в файле.

(async () => {
  const browser = await puppeteer.launch({
    headless: false,
    ignoreDefaultArgs: true
  });
  const page = await browser.newPage();
  await page.goto('https://react-dropzone.js.org/');
  await page.waitForSelector('input[type=file]');
  const fileInput  = await page.$('#rsg-root > div > main > section > section:nth-child(3) > section > section:nth-child(1) > article > div:nth-child(2) > div.rsg--preview-60 > div > section > div > input[type=file]');
  await fileInput.uploadFile("./test/playground.js");

  ///HERE
  await fileInput.evaluate(upload => upload.dispatchEvent(new Event('change', { bubbles: true })));
  ///

  await page.close();
})();
...