Selenium自动化测试框架 入门与使用
目录
1. Selenium 简介
2. 使用 Selenium
2.1 Java 使用 Selenium
2.2 Python 使用 Selenium
2.3 支持的浏览器及 WebDriver
3. ChromeDriver 的安装
3.1 查看本机 Chrome 版本
3.2 匹配对应的 ChromeDriver 并下载
3.3 配置 ChromeDriver 路径
3.4 在服务器(如 CentOS)上安装 Chrome
Java中使用Selenium的代码示例:
4. Selenium 内容详解
4.1 Chrome 启动参数示例
4.2 元素定位方式
4.3 其他定位技巧
1. Selenium 简介
Selenium 是一个开源的 Web 自动化测试框架,支持多种编程语言(如 Java、Python、C# 等),可模拟用户操作浏览器。
Selenium 的主要功能
- 自动化测试:用于 Web 应用程序的功能测试。
- 爬虫与数据抓取:获取网页内容,实现自动化数据收集。
- 网站监控:定期检查网站是否在线,以及页面元素是否按预期显示。
- 视觉测试:结合图像识别技术,检查网页的视觉元素是否符合设计。
- 浏览器兼容性测试:验证 Web 应用在不同浏览器上的表现。
- 性能测试:模拟用户行为,评估网站性能。
- API 测试:通过浏览器自动化测试 Web API。
- 用户旅程映射:模拟用户访问路径,分析用户体验。
- 自动化报告生成:自动执行测试并生成测试报告。
2. 使用 Selenium
2.1 Java 使用 Selenium
环境准备
- 安装 Java 和 IDEA。
- 在 Maven 项目中引入 Selenium 依赖:
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.10.0</version>
</dependency>
<!-- 添加特定浏览器驱动 -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-chrome-driver</artifactId>
<version>4.9.0</version>
</dependency>
<!-- 引入 TestNG 进行测试 -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.4.0</version>
<scope>test</scope>
</dependency>
3.下载对应的浏览器 WebDriver(如 ChromeDriver)。
2.2 Python 使用 Selenium
环境准备
- 安装 Python。
- 通过 pip 安装 Selenium:
pip install selenium
3.下载对应的浏览器 WebDriver(如 ChromeDriver)。
2.3 支持的浏览器及 WebDriver
- Chrome:ChromeDriver
- Firefox:GeckoDriver
- Edge:Microsoft WebDriver
- Internet Explorer:IEDriverServer
- 参考:IE对应的各个版本webdriver_iedriverserver和ie版本对应-CSDN博客
3. ChromeDriver 的安装
下面以Chrome浏览器来举例:
3.1 查看本机 Chrome 版本
在 Chrome 浏览器地址栏输入 chrome://version/
,查看浏览器版本,例如 126.0.6478.57
。
3.2 匹配对应的 ChromeDriver 并下载
方法一:
访问 ChromeDriver 官方下载站:https://chromedriver.chromium.org/downloads下载与 Chrome 版本匹配的 ChromeDriver。
方法二:
- 访问:https://googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.json
- 选择与自己版本最接近的 ChromeDriver。
3.3 配置 ChromeDriver 路径
将下载的 ChromeDriver 放置到固定路径,如:D:\Drivers\chromedriver-win64。
并将其路径添加到系统环境变量(可选)。
3.4 在服务器(如 CentOS)上安装 Chrome
安装 Chrome
curl https://intoli.com/install-google-chrome.sh | bash
查看 Chrome 版本
google-chrome --version
下载并安装 ChromeDriver
按照前述方法下载匹配版本的 ChromeDriver 并解压。
Java中使用Selenium的代码示例:
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class GoogleSearchTest {
private WebDriver driver;
@BeforeMethod
public void setUp() {
// 设置WebDriver路径
System.setProperty("webdriver.chrome.driver", "D:\\Drivers\\chromedriver-win64");
// 初始化WebDriver
driver = new ChromeDriver();
}
@Test
public void testGoogleSearch() {
// 打开Google首页
driver.get("https://www.google.com");
// 等待页面加载完成
driver.manage().timeouts().implicitlyWait(10, java.util.concurrent.TimeUnit.SECONDS);
// 寻找搜索框元素并输入搜索词
driver.findElement(By.name("q")).sendKeys("Selenium");
// 点击搜索按钮
driver.findElement(By.name("btnK")).click();
// 验证页面标题是否包含搜索词
assert driver.getTitle().contains("Selenium");
}
@AfterMethod
public void tearDown() {
// 关闭浏览器
driver.quit();
}
}
4. Selenium 内容详解
4.1 Chrome 启动参数示例
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "D:\\Drivers\\chromedriver-win64");
ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-extensions");
options.addArguments("--headless");
options.addArguments("window-size=1920x3000");
options.addArguments("start-maximized");
options.addArguments("--disable-gpu");
options.addArguments("--user-data-dir");
options.addArguments("--disable-popup-blocking");
options.addArguments("--no-sandbox");
options.addArguments("--disable-web-security");
options.addArguments("--ignore-certificate-errors");
options.addArguments("--incognito");
}
4.2 元素定位方式
- 使用 ID(最快最准确):
driver.findElement(By.id("id值"));
- 使用 CSS 选择器(推荐):
driver.findElement(By.cssSelector("input[type='submit']"));
- 使用 ClassName:
driver.findElement(By.className("elementClass"));
- 使用 TagName:
driver.findElement(By.tagName("input"));
- 使用 Name:
driver.findElement(By.name("elementName"));
- 使用 LinkText(完整文本):
driver.findElement(By.linkText("Link Text"));
- 使用 PartialLinkText(部分文本):
driver.findElement(By.partialLinkText("Partial Link Text"));
- 使用 XPath(避免绝对路径):
driver.findElement(By.xpath("//input[@type='submit']"));
4.3 其他定位技巧
- 使用逻辑运算符组合定位。
- 避免使用过于通用的选择器。
- 处理动态元素时使用显式等待。
- 处理 iframe 时需要先切换到相应的框架。
- 添加异常处理逻辑,提高稳定性。
本指南介绍了 Selenium 的基本概念、功能及其在 Java 中的使用方法,同时详细讲解了 ChromeDriver 的安装步骤和 Selenium 的核心功能。希望大家有所帮助🙂!