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 安装
pip install selenium
Java 安装(Maven 项目)
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.10.0</version> <!-- 使用最新版本 -->
</dependency>
4. 第一个 Selenium 测试脚本
Python 示例(Chrome 浏览器)
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 示例
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) 等待机制
强制等待(不推荐):
import time time.sleep(3) # 等待 3 秒
隐式等待(全局等待):
driver.implicitly_wait(10) # 最多等待 10 秒
显式等待(推荐):
from 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):options = 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
编写完整的测试套件!