web-dev-qa-db-fra.com

Comment se connecter à Puppeteer?

Je suis nouveau sur javascript et marionnettiste. J'ai essayé un code de connexion ci-dessous et j'ai échoué. En comparaison, j'ai ajouté pages2 et réussi. Comment puis-je le résoudre? Merci d'avance.

const CREDS = require('./creds');

async function main() {
const puppeteer = require('puppeteer');
const browser = await puppeteer.launch({headless: false});

const page = await browser.newPage();
await page.setViewport({width: 1200, height: 720})
await page.goto('https://www.daum.net');
await page.waitForNavigation();
await page.type('#id', CREDS.username);
await page.type('#loginPw', CREDS.password);
await page.click('#loginSubmit');

const page2 = await browser.newPage();
await page2.setViewport({width: 1200, height: 720})
await page2.goto('https://google.com');
await page2.type('#lst-ib', 'Headless Chrome');
}

main();
10
Joonho Lee

page.waitForNavigation(); attend la navigation après un click ou toute action de navigation qui se déclenche à partir de la page. vous devriez probablement ajouter waitForNavigation après le page.click.

await Promise.all([
      page.click('#loginSubmit'),
      page.waitForNavigation({ waitUntil: 'networkidle0' }),
]);

Il faudra attendre que les deux promesses se réalisent.

Alors maintenant, votre code initial ressemblerait à ceci,

const puppeteer = require('puppeteer');
async function main() {
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
await page.setViewport({width: 1200, height: 720})
await page.goto('https://www.daum.net', { waitUntil: 'networkidle0' }); // wait until page load
await page.type('#id', CREDS.username);
await page.type('#loginPw', CREDS.password);
// click and wait for navigation
await Promise.all([
          page.click('#loginSubmit'),
          page.waitForNavigation({ waitUntil: 'networkidle0' }),
]);
}

main();

Remarque: Répondez à côté, je ne peux pas tester cela car je n'ai pas de connexion pour daum.net et je ne vois pas l'erreur réelle à laquelle vous faites face. Si vous pouvez essayer la solution fournie ci-dessus et partager les résultats, ce serait beaucoup plus utile.

19
Md. Abu Taher