如何使用 Puppeteer 暂停并等待用户输入?
How can I pause and wait for user input with Puppeteer?
我需要让 Puppeteer
暂停并等待 username
和 password
的用户输入,然后再继续。这是一个 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
中执行此操作?或者我还能做什么?
您可以使用 page.waitForFunction()
等待函数 return 一个真值,然后再继续。
以下函数将等到 #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();
我需要让 Puppeteer
暂停并等待 username
和 password
的用户输入,然后再继续。这是一个 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
中执行此操作?或者我还能做什么?
您可以使用 page.waitForFunction()
等待函数 return 一个真值,然后再继续。
以下函数将等到 #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();