wake-up-neo.com

Wie melde ich mich bei Puppeteer an?

Ich bin neu in Javascript und Puppenspieler. Ich habe unten einen Login-Code ausprobiert und bin fehlgeschlagen. Im Vergleich habe ich pages2 hinzugefügt und war erfolgreich. Wie kann ich das lösen? Danke im Voraus.

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(); wartet nach einem click oder einer von der Seite ausgehenden Navigationsaktion auf die Navigation. Sie sollten wahrscheinlich waitForNavigation nach dem page.click hinzufügen.

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

Es wird warten, bis beide Versprechen erfüllt sind.

Nun würde Ihr anfänglicher Code so aussehen:

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();

Hinweis: Abgesehen davon kann ich dies nicht testen, da ich kein Login für daum.net Habe und den tatsächlichen Fehler, dem Sie gegenüberstehen, nicht sehen kann. Wenn Sie die oben bereitgestellte Lösung ausprobieren und die Ergebnisse teilen können, wäre dies viel hilfreicher.

19
Md. Abu Taher