简介
Selenium 是一个广泛用于自动化 web 浏览器操作的工具,可以用于模拟用户在浏览器中的交互。在自动化测试和网页数据抓取中,经常会遇到需要处理授权框、登录框和握手框的情况。在本文中,我们将详细介绍如何使用 Selenium 处理这些常见的弹出框,并提供示例代码。
弹框分类
在web自动化测试中,我们遇到的弹框通常分为3种,下面我们来介绍一下弹框的分类。
JavaScript警告框
,alert,confirm,prompt这三种弹框都是属于警告框,处理方法为driver.switch_to.alert().dismiss()
或者driver.switch_to.alert().accept()
DOM弹框
,也叫div弹框
,这种弹框本身就在html代码中,只是原来隐藏了,触发时会以对话框形式显示出来,处理方法为,按正常操作,触发显示(建议sleep(.5)),然后直接定位操作上面的元素即可。也可使用js跳过流程,直接使对话框显示,然后定位操作。- 弹出小窗口,这种小窗口实际上是个网页窗口,无须处理(driver还在原页面),或使用
switch_to.window()
切换到新窗口,使用driver.close()
关闭即可。 Basic Auth授权弹框
,这种弹框在加载页面前进行用户名密码验证后才能访问。处理这种弹框我们按照下面的方法:
协议://用户名:密码@服务域名或IP:端口号/接口地址?查询参数
操作示例
- 处理授权框
授权框通常出现在需要输入用户名和密码以访问受保护资源的情况下。以下是如何使用 Selenium 处理授权框的示例:
from selenium import webdriver
# 启动浏览器
driver = webdriver.Chrome()
# 打开一个需要授权的网页
url = "https://example.com/protected"
driver.get(url)
# 处理授权框
alert = driver.switch_to.alert
alert.authenticate("username", "password")
# 继续执行其他操作
# ...
# 关闭浏览器
driver.quit()
在上述示例中,我们首先启动了 Chrome 浏览器,并打开一个需要授权的网页。然后,我们使用 driver.switch_to.alert
来获取授权框对象,再使用 authenticate
方法提供用户名和密码来处理授权框。
- 处理登录框
登录框通常出现在需要用户输入凭据才能登录的情况下。以下是如何使用 Selenium 处理登录框的示例:
from selenium import webdriver
# 启动浏览器
driver = webdriver.Chrome()
# 打开一个需要登录的网页
url = "https://example.com/login"
driver.get(url)
# 找到用户名和密码输入框并填写信息
username_input = driver.find_element_by_id("username")
password_input = driver.find_element_by_id("password")
username_input.send_keys("your_username")
password_input.send_keys("your_password")
# 提交登录表单
login_button = driver.find_element_by_id("login-button")
login_button.click()
# 继续执行其他操作
# ...
# 关闭浏览器
driver.quit()
在上述示例中,我们首先启动 Chrome
浏览器,并打开需要登录的网页。然后,使用 find_element_by_id
方法找到用户名和密码输入框,并填写相应的信息。最后,我们找到登录按钮并模拟点击以提交登录表单。
- 处理握手框
握手框通常出现在需要确认一个安全连接的情况下,例如在访问 HTTPS 网站时。以下是如何使用 Selenium 处理握手框的示例:
from selenium import webdriver
# 启动浏览器
driver = webdriver.Chrome()
# 打开一个需要握手的网页
url = "https://example.com/secure"
driver.get(url)
# 处理握手框
alert = driver.switch_to.alert
alert.accept()
# 继续执行其他操作
# ...
# 关闭浏览器
driver.quit()
在上述示例中,我们首先启动 Chrome 浏览器,并打开一个需要握手的网页。然后,我们使用 driver.switch_to.alert
来获取握手框对象,再使用 accept
方法来确认握手框。
总结
使用 Selenium,可以轻松地处理授权框、登录框和握手框,使自动化测试和数据抓取更加高效。上述示例提供了如何处理这些常见弹出框的方法,但需要根据具体网站的 HTML 结构和弹出框的特性来进行调整。
标签:浏览器,登录,示例,Selenium,握手,driver,弹框,alert,软件测试 From: https://blog.51cto.com/u_15640304/8245816