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/binC:\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 模式等高级用法。
下一步 :尝试结合 pytestTestNG 编写完整的测试套件!

相关推荐
Python大数据分析@5 小时前
浏览器自动化工具 Selenium,Playwright,Puppeteer 做爬虫有哪些弊病?
爬虫·selenium·自动化
弹简特7 小时前
【精通Postman接口测试】01-基础理论+安装使用+项目实战+接口关联(万字图文,零基础保姆级)
测试工具·postman·接口关联
武帝为此21 小时前
【Selenium 屏幕截图】
python·selenium·测试工具
武帝为此1 天前
【Selenium 执行 JavaScript】
javascript·selenium·测试工具
llilian_161 天前
晶体频率测试仪 破解晶振品控核心难题:晶体频率网络测试仪深度解析 晶体网络分析仪
网络·功能测试·单片机·嵌入式硬件·测试工具·51单片机
深念Y1 天前
从 Playwright/Selenium 到指纹浏览器:浏览器自动化技术的进阶之路
selenium·测试工具·自动化·浏览器·账号·无头浏览器·指纹浏览器
Johnstons2 天前
Wireshark ExpertInfo是什么?一文讲透异常分级、适用场景、和传统抓包阅读的区别与排查标准
网络·测试工具·wireshark·es
我的xiaodoujiao2 天前
API 接口自动化测试详细图文教程学习系列16--项目实战演练3
python·学习·测试工具·pytest
我的xiaodoujiao2 天前
API 接口自动化测试详细图文教程学习系列15--项目实战演练2
python·学习·测试工具·pytest
LT10157974442 天前
2026年低代码自动化测试平台选型指南:降低测试落地门槛
测试工具·低代码·自动化