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 编写完整的测试套件!

相关推荐
天才测试猿6 小时前
Selenium常用函数总结
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
一个幽默的程序员16 小时前
Postman 如何批量发送 API 请求?循环发送功能
测试工具·postman
niuniu_66618 小时前
appium应用测试场景
功能测试·selenium·测试工具·appium·测试
程序员小远18 小时前
Python+requests实现接口自动化测试框架
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
测试渣1 天前
JIRA/Xray测试管理工具的最佳实践:从基础到高阶的全场景指南
测试工具·自动化·jira
测试老哥1 天前
什么是集成测试?集成的方法有哪些?
自动化测试·软件测试·python·测试工具·职场和发展·单元测试·集成测试
Feng.Lee1 天前
如何使用K8S快速部署测试环境
测试工具·云原生·容器·kubernetes·可用性测试
小小的测试一下1 天前
业务流程先导及流程图回顾
功能测试·软件工程
春风又。2 天前
接口自动化——初识pytest
python·测试工具·自动化·pytest
HaiFan.2 天前
论坛系统的测试
功能测试