Selenium
一、学习路线规划
阶段 1:基础入门(1-2周)
前置知识
- 掌握一门编程语言(Python/Java 为主,推荐 Python 语法简洁)。
- 了解 HTML/CSS 基础(元素标签、选择器)。
- 熟悉浏览器开发者工具(Chrome DevTools)。
环境搭建
- 安装 Python/Java、Selenium 库、浏览器驱动(ChromeDriver)。
- 编写第一个脚本:打开网页并获取标题。
核心操作
- 浏览器控制:前进/后退、窗口切换、Cookie 管理。
- 元素定位:ID、XPath、CSS 选择器(重点掌握)。
阶段 2:进阶技能(2-3周)
复杂场景处理
- 弹窗/Frame 切换、文件上传、下拉框选择。
- 鼠标/键盘事件(悬停、拖拽、快捷键)。
等待机制
- 隐式等待(全局) vs 显式等待(条件触发)。
- 动态元素处理:
WebDriverWait
+expected_conditions
。
测试框架集成
- Python:
pytest
(夹具、参数化、报告)。 - Java:
TestNG
(断言、分组、依赖管理)。
- Python:
阶段 3:项目实战(3-4周)
框架设计
- Page Object 模式:分离页面逻辑与测试用例。
- 数据驱动:从 Excel/JSON/YAML 读取测试数据。
- 日志与报告:Allure 或 HTMLTestRunner 生成可视化报告。
持续集成(CI/CD)
- 集成 Jenkins/GitHub Actions 自动化执行测试。
- 并行测试:Selenium Grid 或 Docker 多容器执行。
真实项目演练
- 电商平台:购物车流程、订单支付验证。
- Web 应用:表单提交、数据校验。
二、重点内容详解
1. 元素定位(核心之核心)
八大定位方式:
# Python 示例 driver.find_element(By.ID, "username") driver.find_element(By.XPATH, "//input[@class='login']") driver.find_element(By.CSS_SELECTOR, "button.submit")
XPath 高阶技巧:
- 轴定位:
ancestor
、following-sibling
。 - 动态属性:
contains()
、starts-with()
。
- 轴定位:
Selenium 4 新增:
RelativeLocator
(相对定位器)。
2. 框架设计模式
Page Object Model (POM):
class LoginPage: def __init__(self, driver): self.driver = driver self.username = (By.ID, "username") def enter_username(self, text): self.driver.find_element(*self.username).send_keys(text)
数据驱动测试:
# 使用 pytest 参数化 @pytest.mark.parametrize("user,pwd", [("admin", "123"), ("test", "456")]) def test_login(user, pwd): login_page.enter_credentials(user, pwd)
3. 高级应用场景
跨浏览器测试:
from selenium import webdriver browsers = { "chrome": webdriver.Chrome(), "firefox": webdriver.Firefox() }
Headless 模式(无界面运行):
options = webdriver.ChromeOptions() options.add_argument("--headless")
移动端测试:Appium + Selenium 协议扩展。
三、学习资源推荐
1. 官方文档
2. 书籍
- 《Selenium WebDriver 3 实战指南》(Java 方向)
- 《Python 自动化测试实战》(基于 Selenium + pytest)
3. 实战平台
- Selenium 练习网站
- Automation Exercise(电商测试场景)
四、避坑指南
常见问题 | 解决方案 |
---|---|
元素定位失败 | 使用 WebDriverWait + 多种定位方式组合 |
动态 ID/Class 变化 | 改用相对 XPath 或 CSS 属性选择器 |
浏览器版本与驱动不匹配 | 通过 webdriver-manager 自动匹配驱动 |
并行测试数据污染 | 隔离测试数据 + 使用 pytest-xdist 插件 |
五、职业发展延伸
- 技能拓展:
- 接口自动化:Requests + Postman。
- 性能测试:JMeter/Locust。
- 领域深耕:
- 金融/电商行业测试规范。
- 安全测试:OWASP ZAP 扫描。
掌握 Selenium 是自动化测试的起点,持续实践和项目打磨才能成为真正的测试开发工程师! 🚀