首页/新闻资讯/正文详情

Selenium自动化测试入门:环境配置与浏览器控制

发布时间:2026/11/6 2:23:53 来源:云帆数科 栏目:资讯中心
Selenium自动化测试入门:环境配置与浏览器控制
1. Selenium自动化测试入门指南作为一名长期从事Web自动化测试的工程师我经常需要向新人解释Selenium的基本使用方法。今天我就来分享一套经过实战检验的Selenium入门方案特别适合刚接触Web自动化的开发者。我们将从环境配置开始逐步掌握浏览器控制的核心技巧。2. 环境准备与驱动配置2.1 浏览器驱动下载Selenium需要特定版本的浏览器驱动才能正常工作。以Chrome为例首先查看本地Chrome版本在浏览器地址栏输入chrome://version/访问ChromeDriver官方镜像站https://googlechromelabs.github.io/chrome-for-testing/选择与本地Chrome大版本号匹配的驱动版本如Chrome 120.x对应ChromeDriver 120.x.x.x注意驱动版本必须与浏览器主版本号一致否则会出现兼容性问题。这是新手最常见的错误之一。下载完成后建议将驱动文件放在项目根目录下方便路径管理。我通常会在项目中创建drivers目录专门存放各种浏览器驱动。2.2 驱动路径处理技巧在代码中指定驱动路径时建议使用绝对路径并做好兼容处理import os from selenium.webdriver.chrome.service import Service # 获取驱动绝对路径 driver_path os.path.join(os.path.dirname(__file__), drivers/chromedriver.exe) service Service(executable_pathdriver_path)这样处理可以避免在不同操作系统或项目结构中出现的路径问题。3. 浏览器实例化与控制3.1 浏览器选项配置通过Options类可以定制浏览器的启动参数from selenium.webdriver.chrome.options import Options options Options() options.add_argument(--no-sandbox) # 禁用沙盒模式 options.add_experimental_option(detach, True) # 保持浏览器打开--no-sandbox参数在某些Windows系统上是必须的特别是遇到权限问题时detach选项可以让浏览器在脚本结束后保持打开方便调试3.2 浏览器实例创建推荐使用Service类管理驱动生命周期from selenium import webdriver def create_driver(): options Options() options.add_argument(--no-sandbox) options.add_experimental_option(detach, True) service Service(executable_pathdriver_path) return webdriver.Chrome(serviceservice, optionsoptions) driver create_driver()将创建过程封装成函数可以大大提高代码复用率。4. 基本页面操作4.1 页面导航控制# 打开网页 driver.get(https://www.baidu.com) # 刷新页面 driver.refresh() # 前进/后退 driver.forward() driver.back()提示页面加载需要时间实际操作中应该添加等待逻辑我们会在后续章节详细讲解。4.2 窗口与标签页管理# 关闭当前标签页 driver.close() # 完全退出浏览器 driver.quit() # 窗口最大化/最小化 driver.maximize_window() driver.minimize_window() # 设置窗口尺寸 driver.set_window_size(1024, 768)特别注意close()和quit()的区别close()仅关闭当前标签页quit()会退出整个浏览器并释放驱动资源5. 实战技巧与常见问题5.1 调试技巧添加延时观察效果import time time.sleep(2) # 暂停2秒打印页面信息辅助调试print(driver.current_url) # 当前URL print(driver.title) # 页面标题5.2 常见问题排查版本不匹配错误症状SessionNotCreatedException解决方案确保浏览器和驱动版本完全匹配驱动路径问题症状WebDriverException解决方案使用绝对路径检查文件权限浏览器未关闭确保在脚本最后调用driver.quit()或者在try-finally块中管理浏览器生命周期6. 完整示例代码import os import time from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.service import Service # 配置驱动路径 driver_path os.path.join(os.path.dirname(__file__), drivers/chromedriver.exe) def create_driver(): # 浏览器选项配置 options Options() options.add_argument(--no-sandbox) options.add_experimental_option(detach, True) # 创建服务实例 service Service(executable_pathdriver_path) # 实例化浏览器 return webdriver.Chrome(serviceservice, optionsoptions) # 使用示例 driver create_driver() try: driver.get(https://www.baidu.com) driver.maximize_window() time.sleep(2) print(f当前页面标题: {driver.title}) print(f当前页面URL: {driver.current_url}) time.sleep(2) driver.minimize_window() time.sleep(2) finally: driver.quit()在实际项目中我会进一步将这些基础操作封装成PageObject模式使测试代码更加清晰可维护。但作为入门掌握这些核心操作已经可以应对大多数简单的自动化需求了。

相关推荐

金融数据可视化平台架构设计与实战优化
金融数据可视化平台架构设计与实战优化

1. 金融数据可视化的行业痛点与价值在金融机构的日常运营中,数据就像血液一样贯穿各个业务环节。但现实情况往往是:核心业务系统、风控系统、客户管理系统各自为政,数据标准不统一,报表口径不一致。某股份制银行的数据团队负责人曾… · 2026/11/6 2:23:53

Redis Stream实现高并发秒杀系统架构设计
Redis Stream实现高并发秒杀系统架构设计

1. 项目背景与核心需求在电商系统中,秒杀活动是最具挑战性的场景之一。面对瞬时高并发流量,传统数据库直接处理订单的方式往往会导致系统崩溃。我在实际项目中曾遇到过这样一个案例:某次促销活动上线后,数据库连接池瞬间被占满&am… · 2026/11/6 2:23:53

西门子S7-1200 PLC四层电梯控制系统开发详解
西门子S7-1200 PLC四层电梯控制系统开发详解

1. 项目概述与核心价值这个基于西门子S7-1200 PLC和TIA Portal V15.1的四层电梯控制系统,最吸引人的特点是它的"开箱即用"特性——提供的程序文件可以直接导入博图环境进行仿真运行,且配套视频展示的就是实际运行效果。对于工控领域的从业者和… · 2026/11/6 2:23:53

基于PLC与组态王的智能铁路道口控制系统设计
基于PLC与组态王的智能铁路道口控制系统设计

1. 项目背景与核心需求火车道口作为铁路与公路的交汇点,一直是交通安全管理的重点区域。传统道口控制主要依赖人工值守或简单定时控制,存在响应滞后、灵活性差等问题。我们团队基于S7-200 PLC和组态王软件开发的智能控制系统,实现了道口设备的… · 2026/11/6 2:25:53

Java+Spring Boot电影在线订票系统源码:权限、锁座与订单状态机
Java+Spring Boot电影在线订票系统源码:权限、锁座与订单状态机

简介:面向具备一定Java基础、希望学习或从事在线票务系统开发的技术人员,这份文档围绕基于Java与Spring Boot的电影在线订票选座系统展开,重点解决用户、会员与管理员三类角色的功能设计及实现思路,涉及注册登录、影片浏览、订单管… · 2026/11/6 2:25:53

Spring Boot电影在线订票系统:选座并发锁与订单事务实战
Spring Boot电影在线订票系统:选座并发锁与订单事务实战

简介:面向具备一定Java基础、希望学习或从事电影票务管理系统开发的人员,这份docx技术文档围绕基于Java与Spring Boot的在线订票选座系统展开,可作为课程设计、毕业项目或企业票务平台需求梳理的参考。文档梳理普通用户、会员与管理员三类角色… · 2026/11/6 2:25:53

MSP430+LM2576开关电源并联均流系统设计与调试
MSP430+LM2576开关电源并联均流系统设计与调试

简介:这份文档是2011年全国大学生电子设计竞赛A题「开关电源模块并联供电系统」的完整设计论文,面向参加电子设计竞赛的高校学生,以及学习开关电源与并联均流技术的工程人员。论文以MSP430F149单片机为控制器、LM2576-ADJ为电源芯片&#xff… · 2026/11/6 2:25:53

SMP平台备份恢复策略与实战技巧
SMP平台备份恢复策略与实战技巧

1. 备份与恢复的核心概念解析在软件开发领域,备份与恢复就像建筑工地的安全网,平时看似多余,关键时刻却能救命。我经历过无数次因为忽视备份而导致的灾难性后果,也见证过完善的备份策略如何挽救项目于危难之中。1.1 备份的本质与演… · 2026/11/6 2:25:53

双指针算法实战:有序数组去重与工程应用
双指针算法实战:有序数组去重与工程应用

1. 问题背景与核心需求这道算法题看似简单,却蕴含着数组操作的精妙技巧。题目要求我们在原地修改一个已排序的数组,使得每个元素最多出现两次,并返回新数组的长度。不同于基础版的"删除重复项"(只保留单一实例&#xff… · 2026/11/6 2:24:53

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:07

三菱PLC数据采集到数据库的时序设计:Python+MC协议实战
三菱PLC数据采集到数据库的时序设计:Python+MC协议实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

ASIC主模式RTL设计:状态机与三态驱动的流片级实现
ASIC主模式RTL设计:状态机与三态驱动的流片级实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

STM32嵌入式C++开发:GDB调试与Renode仿真实战指南
STM32嵌入式C++开发:GDB调试与Renode仿真实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:07

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码