1. Selenium 简介
Selenium 是一个开源的 Web 自动化测试工具,支持多种编程语言(Java、Python、C#、JavaScript 等)和浏览器(Chrome、Firefox、Edge 等)。它包含三个主要组件:
-
Selenium WebDriver:用于编写自动化测试脚本的核心 API。
-
Selenium Grid:用于分布式测试,支持多机器并行运行测试。
-
Selenium IDE:浏览器插件,用于录制和回放测试用例(适合初学者)。
2. 学习 Selenium 的前置知识
在学习 Selenium 之前,建议掌握以下基础知识:
-
HTML & CSS :理解网页元素结构(如
<input>
,<button>
,<div>
等)。 -
JavaScript(基础):有助于理解 Web 交互逻辑。
-
编程语言(Python/Java):Selenium 支持多种语言,推荐 Python(简单)或 Java(企业常用)。
-
XPath 和 CSS 选择器:用于定位网页元素。
3. 环境搭建
(1) 安装浏览器驱动
Selenium 需要浏览器驱动来控制浏览器:
-
Chrome :ChromeDriver
-
Firefox :GeckoDriver
-
Edge :EdgeDriver
下载后,将驱动文件放在 PATH
环境变量路径(如 /usr/local/bin
或 C:\Windows\
)。
(2) 安装 Selenium
Python 安装
bash
pip install selenium
Java 安装(Maven 项目)
XML
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.10.0</version> <!-- 使用最新版本 -->
</dependency>
4. 第一个 Selenium 测试脚本
Python 示例(Chrome 浏览器)
python
from selenium import webdriver
from selenium.webdriver.common.by import By
# 初始化浏览器驱动
driver = webdriver.Chrome()
# 打开网页
driver.get("https://www.baidu.com")
# 定位搜索框并输入内容
search_box = driver.find_element(By.ID, "kw")
search_box.send_keys("Selenium")
# 点击搜索按钮
search_button = driver.find_element(By.ID, "su")
search_button.click()
# 等待 3 秒查看结果
import time
time.sleep(3)
# 关闭浏览器
driver.quit()
Java 示例
java
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class FirstSeleniumTest {
public static void main(String[] args) {
// 设置 ChromeDriver 路径(如果未配置环境变量)
System.setProperty("webdriver.chrome.driver", "path/to/chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://www.baidu.com");
driver.findElement(By.id("kw")).sendKeys("Selenium");
driver.findElement(By.id("su")).click();
try {
Thread.sleep(3000); // 等待 3 秒
} catch (InterruptedException e) {
e.printStackTrace();
}
driver.quit();
}
}
5. 核心概念
(1) 元素定位方式
Selenium 提供多种定位方式:
-
By.ID
(推荐,唯一性高) -
By.NAME
-
By.CLASS_NAME
-
By.TAG_NAME
-
By.LINK_TEXT
(适用于<a>
链接) -
By.PARTIAL_LINK_TEXT
-
By.XPATH
(灵活但易变) -
By.CSS_SELECTOR
(推荐,性能好)
(2) 常用操作
-
send_keys("text")
:输入文本 -
click()
:点击元素 -
clear()
:清空输入框 -
get_attribute("value")
:获取元素属性 -
is_displayed()
/is_enabled()
:检查元素状态
(3) 等待机制
-
强制等待(不推荐):
pythonimport time time.sleep(3) # 等待 3 秒
-
隐式等待(全局等待):
pythondriver.implicitly_wait(10) # 最多等待 10 秒
-
显式等待(推荐):
pythonfrom selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "kw")) )
6. 进阶学习
-
Page Object Model (POM)
将页面元素和操作封装成类,提高代码可维护性。
-
数据驱动测试
使用
pytest
(Python)或TestNG
(Java)管理测试数据。 -
Selenium Grid
实现多浏览器并行测试。
-
Headless 模式
无界面运行测试(适用于 CI/CD):
pythonoptions = webdriver.ChromeOptions() options.add_argument("--headless") driver = webdriver.Chrome(options=options)
7. 学习资源
-
官方文档 :Selenium Docs
-
书籍:
-
《Selenium WebDriver 实战宝典》(Java)
-
《Python 自动化测试实战》(Python)
-
-
在线课程:
-
Udemy / Coursera 上的 Selenium 课程
-
B 站 / YouTube 免费教程
-
8. 实战练习
-
尝试在 百度 / Google 搜索并验证结果。
-
登录一个网站(如 GitHub),测试登录成功/失败场景。
-
使用 POM 模式 重构代码。
总结
Selenium 是 Web 自动化测试的核心工具,掌握它可以提高测试效率。建议从 Python 或 Java 入手,逐步学习元素定位、等待机制、POM 模式等高级用法。
下一步 :尝试结合 pytest
或 TestNG
编写完整的测试套件!