自动化测试框架Selenium的基本知识和简单实战
Selenium 核心组件
- Selenium WebDriver:是 Selenium 的核心,直接控制浏览器,与浏览器进行交互,支持不同浏览器的驱动(如 ChromeDriver、GeckoDriver 等)。
- Selenium IDE:是一个基于浏览器的插件,用于录制和回放测试脚本,方便快速创建简单的测试用例。
- Selenium Grid:用于分布式测试,可以在多个浏览器和操作系统上并行运行测试,提高测试效率。
元素定位
| 属性 | 函数 |
|---|---|
| CLASS | find_element(by=By.CLASS_NAME, value=‘’) |
| XPATH | find_element(by=By.XPATH, value=‘’) |
| LINK_TEXT | find_element(by=By.LINK_TEXT, value=‘’) |
| PARTIAL_LINK_TEXT | find_element(by=By.PARTIAL_LINK_TEXT, value=‘’) |
| TAG | find_element(by=By.TAG_NAME, value=‘’) |
| CSS | find_element(by=By.CSS_SELECTOR,value=‘’) |
| ID | find_element(by=By.ID, value=‘’) |
常用操作
浏览器操作
- 打开网页:driver.get("https://www.example.com")
- 最大化窗口:driver.maximize_window()
- 最小化窗口:driver.minimize_window()
- 关闭当前窗口:driver.close()
- 关闭所有窗口并退出驱动:driver.quit()
- 前进:driver.forward()
- 后退:driver.back()
- 网页标题:driver.title
- 网页网址:driver.current_url
- 网页名称:driver.name
- 切换窗口:
# 获取打开的多个窗口句柄
windows = driver.window_handles
# 切换到当前最新打开的窗口
driver.switch_to.window(windows[-1])
- 截图:driver.get_screenshot_as_file("url")
元素操作
- 输入文本:element.send_keys("文本内容")
- 点击元素:element.click()
- 获取元素文本:text = element.text
- 获取元素属性值:attribute_value = element.get_attribute("属性名")
等待操作
- 强制等待:使用time.sleep(秒数),让程序暂停指定的时间,缺点是不够灵活,无论元素是否加载完成都等待固定时间。
import time
time.sleep(3)
- 隐式等待:driver.implicitly_wait(秒数),设置全局等待时间,在查找元素时,如果元素未立即出现,会在指定时间内不断尝试查找,直到找到元素或超时。
driver.implicitly_wait(10)
- 显式等待:使用WebDriverWait类,根据特定条件等待元素出现、可点击、可见等。
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.ID, "element_id")))
实战案例
以登录一个简单的 Web 应用为例:
from selenium import webdriver
from selenium.webdriver.common.by import By
# 初始化浏览器驱动
driver = webdriver.Chrome()
# 打开登录页面
driver.get("https://www.example.com/login")
# 定位用户名和密码输入框及登录按钮
username_input = driver.find_element(By.ID, "username")
password_input = driver.find_element(By.ID, "password")
login_button = driver.find_element(By.ID, "login-button")
# 输入用户名和密码
username_input.send_keys("your_username")
password_input.send_keys("your_password")
# 点击登录按钮
login_button.click()
# 等待页面加载完成(可根据实际情况调整等待方式)
# 例如使用显式等待判断登录后的元素是否出现
# 关闭浏览器
driver.quit()
进阶技巧
6.1 处理 iframe
如果网页中存在 iframe,需要先切换到 iframe,再进行元素定位和操作。
# 切换到iframe
driver.switch_to.frame("iframe_id")
# 定位和操作元素
element = driver.find_element(By.ID, "element_in_iframe")
# 切换回默认内容
driver.switch_to.default_content()
6.2 处理弹窗
- Alert 弹窗:用于处理浏览器原生的警告框、确认框、提示框等。
alert = driver.switch_to.alert
# 获取弹窗文本
alert_text = alert.text
# 点击确认按钮
alert.accept()
# 点击取消按钮
alert.dismiss()

浙公网安备 33010602011771号