本文带你了解如何在 Python 中使用带有 Chrome 驱动程序的 Selenium 库自动登录网站以及验证登录成功。
Python Selenium如何自动登录?从程序控制 Web 浏览器在许多场景中都很有用,示例用例是网站文本自动化和Web 抓取,这种自动化非常流行的框架是 Selenium WebDriver。
如何使用Selenium实现自动登录?Selenium WebDriver是一个浏览器控制库,它支持所有主流浏览器(Firefox、Edge、Chrome、Safari、Opera 等),并且适用于包括 Python 在内的不同编程语言。在本教程中,我们将使用其Python 绑定来自动登录网站。
将登录过程自动化到网站被证明是很方便的。例如,你可能希望自动编辑你的帐户设置,或者你希望提取一些需要登录的信息等。
我们有一个关于使用BeautifulSoup库提取 Web 表单的教程,因此你可能希望结合提取登录表单并在本教程的帮助下填充它们。
Python Selenium自动登录示例介绍 - 首先,让我们为 Python 安装 Selenium:
pip3 install selenium
下一步是安装特定于我们要控制的浏览器的驱动程序,此页面上提供了下载链接。我正在安装ChromeDriver,但你可以随意使用你最喜欢的。
为了使事情具体化,我将使用Github 登录页面来演示如何使用 Selenium 自动登录。
Python Selenium如何自动登录?打开一个新的 Python 脚本并初始化 WebDriver:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait# Github credentials
username = "username"
password = "password"# initialize the Chrome driver
driver = webdriver.Chrome("chromedriver")
为你的操作系统下载并解压缩驱动程序后,将其放在你的当前目录或已知路径中,以便你可以将其传递给
webdriver.Chrome()
类。就我而言,chromedriver.exe位于当前目录中,因此我只需将其名称传递给构造函数。如何使用Selenium实现自动登录?由于我们对自动化 Github 登录感兴趣,我们将导航到 Github 登录页面并检查该页面以识别其 HTML 元素:
文章图片
的
id
登录名和密码输入框,和名称的登录按钮将是有用的为我们检索这些代码元素并插入到它编程。Python Selenium自动登录示例:请注意,用户名/电子邮件地址输入字段有
login_field
id
,其中密码输入字段有id
of password
,另请参阅提交按钮有name
of commit
,下面的代码转到 Github 登录页面,提取这些元素,填写凭据,然后单击按钮:# head to github login page
driver.get("https://github.com/login")
# find username/email field and send the username itself to the input field
driver.find_element_by_id("login_field").send_keys(username)
# find password input field and insert password as well
driver.find_element_by_id("password").send_keys(password)
# click login button
driver.find_element_by_name("commit").click()
该
find_element_by_id()
函数通过其检索一个 HTML 元素id
,该send_keys()
方法模拟按键操作,上面的代码单元格将使 Chrome 输入电子邮件和密码,然后单击登录按钮。Python Selenium如何自动登录?接下来要做的是确定我们的登录是否成功,有很多方法可以检测到这一点,但在本教程中,我们将通过检测登录时显示的错误来完成(当然,这将从网站到另一个)。
文章图片
如何使用Selenium实现自动登录?上图显示了当我们插入错误凭据时会发生什么,你将看到一个新的 HTML
div
元素,该元素的类"flash-error"
具有“不正确的用户名或密码”文本。.下面的Python Selenium自动登录示例代码负责使用 执行登录后等待页面加载
WebDriverWait()
,并检查错误:# wait the ready state to be complete
WebDriverWait(driver=driver, timeout=10).until(
lambda x: x.execute_script("return document.readyState === 'complete'")
)
error_message = "Incorrect username or password."
# get the errors (if there are)
errors = driver.find_elements_by_class_name("flash-error")
# print the errors optionally
# for e in errors:
#print(e.text)
# if we find that error message within errors, then login is failed
if any(error_message in e.text for e in errors):
print("[
!] Login failed")
else:
print("[
+] Login successful")
我们使用 WebDriverWait 等待文档加载完成,该
execute_script()
方法在浏览器的上下文中执行 Javascript,页面加载时return document.readyState === 'complete'
返回JS 代码True
,False
否则。最后,我们关闭我们的驱动程序:
# close the driver
driver.close()
Python Selenium如何自动登录?总结好的,现在你可以自动登录到你选择的网站,请注意,当你使用错误的凭据多次运行脚本时,Github 会阻止你,因此请注意这一点。
现在你可以在使用你的帐户登录后做你想做的事情,你可以在我们打印“登录成功”的行中添加代码。
【如何在Python中使用Selenium实现自动登录(详细教程)】此外,如果你使用真实帐户成功登录,你可能会遇到电子邮件确认,要绕过它,你必须使用 Python以编程方式阅读你的电子邮件并提取确认代码,然后使用 Selenium 实时插入,太好了挑战,不是吗?祝你好运!
推荐阅读
- 如何在Python中使用Edge和Selenium进行自动浏览器测试()
- 如何在Python中获取硬件和系统信息(详细教程)
- 如何在Python中控制鼠标(详细代码实现教程)
- keyboard键盘模块(如何用Python控制你的键盘())
- 如何在Python中制作进程监视器(详细实现教程)
- u盘打开盘如何自制,教您如何自制u盘打开盘
- u盘删除数据恢复,教您如何恢复u盘删除数据
- 杏雨梨云u盘系统如何装系统,教您杏雨梨云u盘系统如何装系统
- u盘写保护无法格式化怎样办,教您处理u盘写保护无法格式化