如何使用Puppeteer暂停并等待用户输入?

问题描述 投票:0回答:1

我需要让Puppeteer暂停并等待usernamepassword的用户输入才能继续。这是一个nodejs 8.12.0应用程序。

(async () => {
    const browser = await puppeteer.launch({headless: false});
    const page = await browser.newPage();   
    await page.goto('https://www.myweb.com/login/');

    //code to wait for user to enter username and password, and click `login`

    const first_page = await page.content();

   //do something 

    await browser.close();
)}();

基本上程序停止并等待用户单击login按钮。在Puppeteer可以这样做吗?或者我还能做什么?

javascript node.js casperjs puppeteer headless-browser
1个回答
3
投票

您可以使用page.waitForFunction()等待函数返回truthy值,然后再继续。

以下函数将等到#username#password字段包含值之后再继续:

await page.waitForFunction(() => {
  const username = document.getElementById('username').value;
  const password = document.getElementById('password').value;

  return username.length !== 0 && password.length !== 0;
});

但是既然你自己进入了#username#password,你可以简单地使用:

await page.type('#username', 'username');
await page.type('#password', 'password');
await page.click('#login');
await page.waitForNavigation();
© www.soinside.com 2019 - 2024. All rights reserved.