Dav*_*tro 8 javascript automation puppeteer
我正在使用 Puppeteer 并且正在尝试登录我的 Gmail 帐户
目前我的代码输入电子邮件表单并提交输入,然后当页面进入密码屏幕时,无法在输入中写入密码。这可能是因为它在技术上不是新页面,而是相同的。不管怎样,当我在电子邮件页面上按 Enter 时,我似乎无法与这个新页面进行交互。
我尝试了很多方法,但都没有效果。
const elementHandle = await page.$('input');
await elementHandle.type('dp-conference@digitalpulp.com');
await page.click("#identifierNext");
//goes to new page
//this code does not work.
const pw = await page.$('input[type="password"]');
page.on('load', () => console.log("Loaded: " + page.url()));
Run Code Online (Sandbox Code Playgroud)
})
小智 8
这个完整的脚本应该可以工作,请注意,如果您已经登录或者您的帐户使用两步身份验证,这不会处理,祝您好运
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({ headless: false})
const page = await browser.newPage()
const navigationPromise = page.waitForNavigation()
await page.goto('https://accounts.google.com/')
await navigationPromise
await page.waitForSelector('input[type="email"]')
await page.click('input[type="email"]')
await navigationPromise
//TODO : change to your email
await page.type('input[type="email"]', 'youremail@gmail.com')
await page.waitForSelector('#identifierNext')
await page.click('#identifierNext')
await page.waitFor(500);
await page.waitForSelector('input[type="password"]')
await page.click('input[type="email"]')
await page.waitFor(500);
//TODO : change to your password
await page.type('input[type="password"]', 'yourpassword')
await page.waitForSelector('#passwordNext')
await page.click('#passwordNext')
await navigationPromise
//await browser.close()
})()
Run Code Online (Sandbox Code Playgroud)
如果发生页面加载,则后续命令/脚本将无法工作,因为它们未正确加载。为此,有waitForNavigation方法。
您的代码将类似于:
const elementHandle = await page.$('input');
await elementHandle.type('dp-conference@digitalpulp.com');
await page.click("#identifierNext");
// Wait for next pageload
await page.waitForNavigation(waitOptions)
const pw = await page.$('input[type="password"]');
Run Code Online (Sandbox Code Playgroud)