首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Puppeteer登录Google?

如何使用Puppeteer登录Google?
EN

Stack Overflow用户
提问于 2018-02-02 05:48:48
回答 3查看 8.4K关注 0票数 5

我正在使用Puppeteer,我正在尝试登录我的Gmail帐户

网址:https://accounts.google.com/ServiceLogin/identifier?service=mail&passive=true&rm=false&continue=https%3A%2F%2Fmail.google.com%2Fmail%2F&ss=1&scc=1

目前我的代码在电子邮件表单中输入并提交enter,然后当页面进入密码屏幕时,无法在密码输入中写入内容。这可能是因为从技术上讲,这不是一个新页面,而是相同的页面。无论哪种方式,当我在电子邮件页面上按回车键时,我似乎无法与这个新页面进行交互。

我尝试了很多方法,但都无济于事。

代码语言:javascript
运行
复制
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()));

})

EN

回答 3

Stack Overflow用户

发布于 2019-10-03 10:00:57

这个完整的脚本应该可以工作,如果您已经登录或您的帐户使用双因素身份验证,请不要使用此脚本,祝您好运

代码语言:javascript
运行
复制
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()
})()
票数 5
EN

Stack Overflow用户

发布于 2018-02-07 07:34:49

如果发生页面加载,那么后续的命令/脚本将无法正常工作,因为它们没有正确加载。为此,有一个waitForNavigation方法。

您的代码将如下所示:

代码语言:javascript
运行
复制
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"]');
票数 0
EN

Stack Overflow用户

发布于 2021-09-18 04:22:13

这就是现在的工作。一旦它像这样加载,你就可以登录。绕过联邦快递的登录限制:)谢谢@ABDELJALILAITETALEB!

代码语言:javascript
运行
复制
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());
doit = async () => {
    const browser = await puppeteer.launch({args: ['--no-sandbox'], headless: false});
    let page = await browser.newPage();
    await page.goto('https://accounts.google.com');
}
doit();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48572276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档