文章目录
  1. 1. 准备工作
  2. 2. 编写代码
  3. 3. 寻找节点元素
  4. 4. 总结

孩子随全国流感大浪潮,反复高烧住院一周了。天天守在医院里,平板和苏菲婆也胜任不了日常工作。于是抽空回顾了一些以前学习了,却没有派上用场的知识。

python是当初报了个9块9的班入了个门。不得不感叹它确实是一门相当好掌握的语言,而且工具很多。难怪陈总一直用它做小工具。说到自动化、机器学习、神经网络,真的是一个都绕不开python。这次参考了hongkiat上的一篇文章,实现了Gmail自动登录。

准备工作

这个实践中,与原作者不同,我使用了以下工具:

  1. Python 3 下载
  2. Selenium 4
  3. Chrome 93.0.4577.63 下载
  4. Chrome 驱动 Google下载 | 淘宝镜像下载

安装后,重新启动计算机以使安装生效。

在cmd中输入pip install selenium,将Selenium Web自动化工具包添加到Python中。Selenium让我们可以通过代码来滚动页面、复制文本、填写表单和点击按钮。

下载对应的 Chrome 驱动,然后解压到Python根目录。

编写代码

首先,导入Selenium Python库中所需的模块。

打开你喜欢的任意python编辑器,我偏向于vscode,因为它免费。当然,我绝不否认 jetbrain 的 PyCharm 是我用过的最强Python IDE。

创建文件 gmail.py ,加入以下代码:

1
2
3
4
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

然后,写入你的用户名和密码:

1
2
username = 'yourUsername'
password = 'yourPassword'

接下来就通过驱动程序打开Chrome,并跳转到Gmail的登录页面。

1
2
3
4
browser = webdriver.Chrome()
browser.get(('https://accounts.google.com/ServiceLogin?'
'service=mail&continue=https://mail.google'
'.com/mail/#identifier'))

寻找节点元素

通过前面的代码,我们跳转到了登录页面。接下来要找到页面中的节点来输入用户名和密码。

F12打开Chrome的开发者工具,使用选择工具找到节点元素。

我们在代码中使用html的id属性找到Email并填入用户名。然后,我们则需要再点击Next按钮,以便切换到输入密码的界面。

1
2
3
4
5
6
7
# 填充用户名,并点击下一步按钮

username = browser.find_element(By.ID, 'identifierId')
username.send_keys(usernameStr)

nextButton = browser.find_element(By.ID, 'identifierNext')
nextButton.click()

原本接下来就应该输入密码,点击登录。但是代码执行速度远远快于页面切换的速度,因此我们需要让程序等一会,直到它找到密码输入框。

1
2
3
4
5
6
7
8
9
# 在找到密码输入框之前,等待最多10秒

password = WebDriverWait(browser, 10).until(
EC.presence_of_element_located((By.NAME, "password")))

password.send_keys(passwordStr)

signInButton = browser.find_element(By.ID, 'passwordNext')
signInButton.click()

总结

现在已经简单的完成了自动登录Gmail的机器人。

注意,由于安全原因,最后极可能登录失败。

然而,这个实践的重点根本不在于能不能登录gmail。它告诉我们如何通过代码打开网页,跳转到需要的页面,查找到所需要的元素,进行相应的操作,最后得到我们想要的结果。这个自动化过程可以应用的场景实在太多,给人带来无穷无尽的可能性和想象空间。

但是,要记得合法合理合情使用,不要作死!

最后附上 gmail.py 完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

username = 'yourUsername'
password = 'yourPassword'

browser = webdriver.Chrome()
browser.get(('https://accounts.google.com/ServiceLogin?'
'service=mail&continue=https://mail.google'
'.com/mail/#identifier'))

# 填充用户名,并点击下一步按钮

username = browser.find_element(By.ID, 'identifierId')
username.send_keys(usernameStr)

nextButton = browser.find_element(By.ID, 'identifierNext')
nextButton.click()

# 在找到密码输入框之前,等待最多10秒

password = WebDriverWait(browser, 10).until(
EC.presence_of_element_located((By.NAME, "password")))

password.send_keys(passwordStr)

signInButton = browser.find_element(By.ID, 'passwordNext')
signInButton.click()

♦ 本文固定连接:https://www.gsgundam.com/2022-07-07-how-to-auto-create-login-bot-python-selenium/

♦ 转载请注明:GSGundam 2022年07月07日发布于 GSGUNDAM砍柴工

♦ 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

♦ 原创不易,如果页面上有适合你的广告,不妨点击一下看看,支持作者。(广告来源:Google Adsense)