selenium简介

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 需要浏览器驱动来控制浏览器:

下载后,将驱动文件放在 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) 等待机制

  • 强制等待(不推荐):

    python 复制代码
    import time
    time.sleep(3)  # 等待 3 秒
  • 隐式等待(全局等待):

    python 复制代码
    driver.implicitly_wait(10)  # 最多等待 10 秒
  • 显式等待(推荐):

    python 复制代码
    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. 进阶学习

  1. Page Object Model (POM)

    将页面元素和操作封装成类,提高代码可维护性。

  2. 数据驱动测试

    使用 pytest(Python)或 TestNG(Java)管理测试数据。

  3. Selenium Grid

    实现多浏览器并行测试。

  4. Headless 模式

    无界面运行测试(适用于 CI/CD):

    python 复制代码
    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. 实战练习

  1. 尝试在 百度 / Google 搜索并验证结果。

  2. 登录一个网站(如 GitHub),测试登录成功/失败场景。

  3. 使用 POM 模式 重构代码。


总结

Selenium 是 Web 自动化测试的核心工具,掌握它可以提高测试效率。建议从 Python 或 Java 入手,逐步学习元素定位、等待机制、POM 模式等高级用法。
下一步 :尝试结合 pytest 或 TestNG 编写完整的测试套件!

相关推荐
EVE จุ๊บ17 分钟前
playwright和selenium的区别是什么
selenium·测试工具
Meta Luo2 天前
页面改版后自动化用例大量失败,应该怎么维护?
运维·功能测试·测试工具·自动化
释槐鸟~2 天前
还不知道RIDE工具怎么装吗
测试工具·自动化
有技巧搬砖3 天前
为什么锂电池组的电池老化测试很重要?
测试工具·锂电池·电池老化
蒲公英内测分发3 天前
智能手表卖出去后,包装、说明书和官网里的 App 下载入口怎么统一?
前端·人工智能·测试工具·智能家居·智能硬件·智能手表
蒲公英内测分发3 天前
智能手环出海测试,海外合作方分散在不同国家,Android 测试包怎么持续分发和更新?
android·前端·人工智能·测试工具·智能手表
无语的小歪歪3 天前
ATF 智测 1.0
python·测试工具·集成测试
SHENGWEI胜为4 天前
交换机端口显示正常,终端却获取不到 IP 地址?从 DHCP 流程定位故障
服务器·网络·测试工具·缓存·通信工程
TomEval4 天前
【测AI】第16篇:模型公平性与可解释性测试 — AI 的偏见与黑箱
人工智能·python·功能测试·ai·测试用例
xie881018024 天前
长表格跨页重复表头:排版上的做法
测试工具