📜  使用Python Selenium登录 Gmail

📅  最后修改于: 2022-05-13 01:55:22.214000             🧑  作者: Mango

使用Python Selenium登录 Gmail

在学习Python的同时, Python脚本编写是最有趣和最引人入胜的事情之一。自动化和控制浏览器就是其中之一。

在这篇特别的文章中,我们将了解如何使用Python登录 Gmail 帐户以及selenium的强大功能。

Selenium自动化和控制浏览器及其活动。我们可以在selenium的帮助下以我们的方式编写代码来控制浏览器任务。主要是为了测试目的而自动化 Web 应用程序,但当然不仅限于此。无聊的基于 Web 的管理任务也可以自动化。随着您了解更多,看到事情自动发生并一次又一次地节省时间做无用的任务是非常有趣的。

我们在这里使用selenium打开我们需要的站点(在本例中为 Gmail),然后我们检查电子邮件框、密码框和下一步按钮中的元素以找到它们的 Xpath。

  • 使用selenium模块提供的find_element_by_xpath()函数,我们可以找到需要的元素(用户名框、密码框、下一步按钮)
  • 使用selenium模块提供的send_keys()函数,我们将数据发送到盒子中。
  • 使用click()函数,提供selenium模块,我们点击当前元素。
  • .get()属性允许我们打开一个网页
  • .implicitly_wait()允许我们等待页面加载

需要安装第三方模块

  • Selenium
  • 获得通行证
  • 附加要求:firefox 的 geckodriver 和 chrome 的 chromedriver

导入必要的模块

Selenium :自动化浏览器

将用户名和密码作为用户的输入

使用input()函数并将提示消息作为参数传递。

打开浏览器和所需网站

webdriver.Chrome()将打开 chrome 的新窗口。我们将它的对象保存在名为驱动程序的变量中。

现在使用 get函数,我们将打开 Gmail 网站。

用于发送数据和发送输入的查找元素

在要查找其 id 的浏览器元素上使用检查元素工具。在这种情况下,我们将检查用户名框、密码框、下一步按钮以找到它们的 Xpath。然后使用这个 Xpath 结合selenium函数find_element_by_xpath()在网页中找到它并将其保存在变量中以备后用。然后通过使用send_keys()我们将在之前找到的元素之间发送数据。然后通过使用click()我们将单击找到的元素。

注意:这里的driver是您为webdriver.Chrome()选择的变量的名称。

算法:

这是一个简单的程序,可以登录到您的 gmail 帐户。最好的情况是帐户不安全或组织邮件 ID。

最坏的情况是您的 gmail 帐户启用了两步或两因素身份验证。

算法:

第 1 步:获取邮件 ID 和密码

第二步:打开gmail登录页面

第 3 步:输入 gmail-id 并单击下一步按钮

第四步:输入密码,点击下一步

第 5 步:打印成功或失败并结束

完整代码:

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
  
print('Enter the gmailid and password')
gmailId, passWord = map(str, input().split())
try:
    driver = webdriver.Chrome(ChromeDriverManager().install())
    driver.get(r'https://accounts.google.com/signin/v2/identifier?continue='+\
    'https%3A%2F%2Fmail.google.com%2Fmail%2F&service=mail&sacu=1&rip=1'+\
    '&flowName=GlifWebSignIn&flowEntry = ServiceLogin')
    driver.implicitly_wait(15)
  
    loginBox = driver.find_element_by_xpath('//*[@id ="identifierId"]')
    loginBox.send_keys(gmailId)
  
    nextButton = driver.find_elements_by_xpath('//*[@id ="identifierNext"]')
    nextButton[0].click()
  
    passWordBox = driver.find_element_by_xpath(
        '//*[@id ="password"]/div[1]/div / div[1]/input')
    passWordBox.send_keys(passWord)
  
    nextButton = driver.find_elements_by_xpath('//*[@id ="passwordNext"]')
    nextButton[0].click()
  
    print('Login Successful...!!')
except:
    print('Login Failed')

看看如此简洁的代码是如何为您自动化的。

奖金:

为了安全起见,我们也可以输入密码而不显示在屏幕上。为此,我们必须再包含一个名为getpass的模块。现在只需更改密码的输入语句,我们就可以输入密码而不显示在屏幕上。

from getpass import getpass
  
pwd = getpass('Enter Password:')

Getpass 提示用户输入密码而不回显。基本上,它允许您输入密码而不在屏幕上显示它。

同样,您还可以自动执行许多其他操作,例如 Twitter 登录、推文、Gmail 注销等等。