【自动化测试】Selenium Python UI自动化测试实用教程

一、引言:Selenium与UI自动化测试基础

1.1 Selenium简介

Selenium是一个开源的Web应用自动化测试框架,支持多浏览器(Chrome、Firefox、Edge等)和多编程语言(Python、Java、JavaScript等),核心组件包括:

  • WebDriver:通过浏览器原生API控制浏览器,模拟用户操作(点击、输入等),无侵入性。
  • IDE:浏览器插件,支持录制/回放操作,可导出测试脚本(适合新手快速上手)。
  • Grid:分布式测试工具,支持多节点并行执行测试用例,提升效率。

1.2 2025年Selenium核心新特性

Selenium 4.11+版本(2025年主流版本)带来多项关键更新,显著降低新手使用门槛:

  • Selenium Manager自动驱动管理:无需手动下载/配置ChromeDriver,框架自动匹配浏览器版本并下载驱动,解决长期困扰的“驱动版本不兼容”问题。
  • Chrome For Testing(CfT)支持:谷歌推出的专用测试浏览器,禁用自动更新,确保测试环境一致性,可通过npx @puppeteer/browsers install chrome@stable安装。
  • PageLoadStrategy枚举类:4.17版本新增,替代字符串参数,支持IDE自动补全,避免拼写错误(如options.page_load_strategy = PageLoadStrategy.NONE)。
  • 相对定位器增强:支持通过元素相对位置定位(above/below/to_left_of/to_right_of/near),复杂页面定位更灵活。
  • 启动速度优化:浏览器驱动启动逻辑调整,平均节省0.5秒启动时间,通过动态重试间隔(首次0.01秒,逐步增加至0.5秒)提升效率。

二、环境搭建:从0到1配置开发环境

2.1 Python环境准备

  1. 安装Python
    推荐Python 3.8+(兼容Selenium 4.x),从Python官网下载对应系统版本,安装时勾选“Add Python to PATH”。
    验证安装:python --version(Windows)或python3 --version(macOS/Linux)。

  2. 虚拟环境配置(推荐)
    避免依赖冲突,使用venv创建独立环境:

    # 创建虚拟环境
    python -m venv selenium_env
    # 激活环境(Windows)
    selenium_env\Scripts\activate
    # 激活环境(macOS/Linux)
    source selenium_env/bin/activate

2.2 Selenium安装

通过pip安装最新版Selenium(2025年推荐4.17.0+):

# 基础安装
pip install selenium
# 国内镜像源加速(推荐)
pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple

验证安装:pip show selenium,输出版本信息即成功。

2.3 浏览器与驱动配置

2.3.1 Chrome浏览器(推荐)
  1. 安装Chrome For Testing
    专为测试设计,禁用自动更新,通过npm安装:

    # 安装稳定版Chrome For Testing
    npx @puppeteer/browsers install chrome@stable
    # 安装指定版本(如116.0.5793.0)
    npx @puppeteer/browsers install chrome@116.0.5793.0
  2. 驱动自动管理
    Selenium 4.11+内置Selenium Manager,无需手动下载ChromeDriver:

    from selenium import webdriver
    # 自动管理驱动,无需executable_path参数
    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com")
    driver.quit()
2.3.2 其他浏览器配置
  • Firefox:需安装GeckoDriver,下载后放入系统PATH或通过Service指定路径:
    from selenium.webdriver.firefox.service import Service
    driver = webdriver.Firefox(service=Service("./geckodriver"))
  • Edge:基于Chromium内核,配置方式同Chrome,使用webdriver.Edge()

三、核心API:元素定位与操作实战

3.1 元素定位策略(8大方法)

Selenium提供多种定位方式,按优先级排序如下:

定位方式 语法示例 适用场景
ID driver.find_element(By.ID, "kw") 元素有唯一ID(如百度搜索框)
NAME driver.find_element(By.NAME, "wd")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/90254.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/90254.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于VSCode的nRF52840开发环境搭建

nRF52840是Nordic Semiconductor推出的一款功能强大的多协议SoC,广泛应用于物联网设备、可穿戴设备和低功耗蓝牙产品开发。本篇文章将详细介绍如何在VSCode中搭建完整的nRF52840开发环境,让您能够高效地进行嵌入式开发。 一、准备工作 VSCode&#xff1a…

GStreamer开发笔记(九):gst-rtcp-server安装和部署实现简单的rtsp-server服务器推流Demo

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/149054288 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、O…

C++ namespace机制以及同时使用多个namespace可能存在的问题

在一个 .cpp 文件中使用了多个 using namespace 会怎么样? 核心答案是:可能会导致“命名冲突(Name Collision)”和“二义性(Ambiguity)”,从而引发编译错误。 当你使用 using namespace SomeNam…

基于R语言的分位数回归技术应用

回归是科研中最常见的统计学研究方法之一,在研究变量间关系方面有着极其广泛的应用。由于其基本假设的限制,包括线性回归及广义线性回归在内的各种常见的回归方法都有三个重大缺陷:(1)对于异常值非常敏感,极少量的异常值可能导致结…

网络I/O模型详解-一次了解全部(面试经常会问到相关知识)

前言 网络I/O模型的五种类型,其实在我们开发程序、设计程序、实现程序的方方面面都一直存在着,本文从实现原理、使用场景、优缺点、详细的流程图等方面进行深入的解释,帮助大家更好的理解常用的五种网络io模型,助力大家在工作、面…

面试150 合并K个升序链表

思路 对链表元素进行获取,然后进行sort()排序,最后通过空节点建立链表法重新建立一个有序的链表,返回头节点即可。 # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val …

BitDistiller:通过自蒸馏释放 Sub-4-Bit 大语言模型的潜力

温馨提示: 本篇文章已同步至"AI专题精讲" BitDistiller:通过自蒸馏释放 Sub-4-Bit 大语言模型的潜力 摘要 大语言模型(LLMs)的规模不断扩大,在自然语言处理方面取得了令人瞩目的进展,但这也带来…

JavaScript 的 `querySelector` 方法详解

querySelector 是 JavaScript 中用于选择 DOM 元素的最强大方法之一,它允许你使用 CSS 选择器语法来查找元素。 基本语法 // 返回文档中第一个匹配指定 CSS 选择器的元素 element document.querySelector(selectors);// 从指定元素后代中查找 element parentEle…

第九讲:C++中的list与forward_list

目录 1、list的介绍及使用 1.1、构造及赋值重载 1.2、迭代器 1.3、空间 1.4、访问 1.5、修改 1.6、操作 2、迭代器失效 3、list的模拟实现 4、forward_list介绍与使用 4.1、构造及赋值重载 4.2、迭代器 4.3、容量 4.4、访问 4.5、修改 4.6、操作 5、迭代器的分…

华为云数据库 GaussDB的 nvarchar2隐式类型转换的坑

bigint 与 nvarchar2比较时发生隐式类型转换的坑 1. 案例分析 假设: table1有下面两个字段:id:bigint, source_id nvarchar2(50)数据库中id 的值一定大于 int4 的最大值,例如存在一条单据: id1947854462980792321&…

spring boot 集成netty,及其一些基本概念

一、基本概念 1、channel:通道,入站或者出站数据的载体 2、ChannelHandler:通道处理器,业务逻辑写在这里面,netty 5版本将入战和出站合并成了ChannelHandler 3、ChannelPipeline:通道里的管道,是一个或者多…

7月23日华为机考真题第一题100分

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 bishipass.com 01. 创业投资收益优化 问题描述 K小姐刚刚大学毕业,手头有 m m m 元资金想要进行创业投资。她发现了 k k

HTML5 跨文档通信机制:postMessage API 详解与应用

postMessage 是 HTML5 规范中定义的跨文档通信(Cross-Document Messaging)API,其设计目的是解决不同源(协议、域名、端口任一存在差异)的窗口(如 iframe 嵌入的文档、window.open 创建的新窗口)…

Kafka——Kafka中的位移提交

引言:为什么位移提交至关重要?在Kafka的分布式消息系统中,消费者组(Consumer Group)通过分区分配机制实现负载均衡和容错,但如何准确记录每个消费者的消费进度,是保证消息不丢失、不重复的关键。…

java设计模式 -【装饰器模式】

装饰器模式的定义 装饰器模式(Decorator Pattern)是一种结构型设计模式,允许向一个现有对象动态添加新功能,同时不改变其结构。它通过创建包装对象(装饰器)来包裹原始对象,并在保持原始对象方法…

手写字体生成器:一键模拟真实笔迹

软件介绍 在自媒体创作领域,手写体文案因其独特的艺术感而备受青睐。然而,真实的手写往往效率低下且效果难以保证。今天为大家推荐一款专业的手写模拟软件,能够一键生成逼真的手写字体效果,完美解决创作效率与质量的双重需求。…

【Android】用 ViewPager2 + Fragment + TabLayout 实现标签页切换

文章目录【Android】用 ViewPager2 Fragment TabLayout 实现标签页切换一、引入:什么是 ViewPager2 ?二、ViewPager2 的基础使用1. 在布局文件 (activity_main.xml)中添加 ViewPager22. 制作一个 Fragment2.1 创建一个布局文件2.2 创建一个 Fragment 类…

嵌入式学习-土堆目标检测(4)-day28

Pytorch中加载自定义数据集 - VOC其中需要pip install xmltodict#voc_dataset.pyimport os import torch import xmltodict from PIL import Image from torch.utils.data import Dataset import torchvision.transforms as transformsclass VOCDataset(Dataset): def __init_…

Spring MVC上下文容器在Web容器中是如何启动的(源码深入剖析)?

文章目录一、双容器架构:MVC容器与根容器的关系二、启动全流程解析1. 启动流程全景图2. 初始化根容器(Root WebApplicationContext)2.1 Tomcat 中启动入口源码解析2.2 Spring 根上下文启动源码解析3. 初始化 MVC 容器(DispatcherS…

【iOS】编译和链接、动静态库及dyld的简单学习

文章目录编译和链接1️⃣核心结论:一句话区分2️⃣编译过程:从源代码到目标文件(.o)2.1 预处理(Preprocessing):“替换变量复制粘贴”2.2 编译(Compilation):…