当前位置: 首页 > news >正文

软件测试实战:自动化测试工具Selenium从入门到实战

📌 为什么Selenium是Web自动化的首选?

在上一篇文章中,我们学习了Web UI端测试的基本方法,知道了Chrome DevTools怎么用、元素怎么定位。但你很快会发现一个问题:回归测试太累了。

每次版本发布,都要把核心功能手动点一遍——登录、搜索、下单、支付……几十个用例,每次花一两个小时。而且,人还会疲劳、会遗漏、会点错。

这就是自动化测试要解决的问题。

Selenium是目前最流行的Web自动化测试框架。它支持所有主流浏览器(Chrome、Firefox、Edge、Safari),支持多种编程语言(Python、Java、C#、Ruby等),是回归测试的首选工具。

本文定位:今天是入职系列的第四篇,我们将学习Selenium自动化测试工具,从环境搭建到核心API,从等待机制到Page Object设计模式,一步步入门。

📌核心结论:Selenium不是万能药。它最适合做回归测试,不适合做探索性测试和复杂的UI验证。学会它的核心是掌握三件事:元素定位、等待机制、页面对象模式。

一、Selenium是什么——核心架构与原理

1.1 Selenium核心组件

Selenium由几个核心组件构成:

组件功能使用场景
WebDriver通过浏览器原生接口控制浏览器编写自动化脚本(最常用)
IDE浏览器插件,录制回放操作快速原型、学习
Grid分布式执行测试多浏览器、多平台并行

💡日常工作中最常用的是WebDriver。IDE适合初学者快速上手,但生成的代码可维护性差,不推荐在生产中使用。

1.2 Selenium工作原理

Selenium采用客户端-服务器模式:

四步工作流程

  1. 脚本调用webdriver.Chrome(),启动驱动服务

  2. 脚本调用driver.get(url),发送HTTP请求到驱动

  3. 驱动控制浏览器执行操作(如点击、输入)

  4. 结果返回给脚本

跨浏览器支持

浏览器驱动维护方
ChromeChromeDriverGoogle
FirefoxGeckoDriverMozilla
EdgeEdgeDriverMicrosoft

1.3 Selenium的优势与局限性

优势局限性
开源免费,社区活跃只能测试Web应用
支持多种编程语言执行速度较慢
跨浏览器、跨平台对动态元素需额外处理
与其他工具集成好不适合性能测试

二、环境搭建——从零开始

2.1 安装Selenium库

使用pip安装Selenium:

2.2 下载浏览器驱动

Selenium需要一个“翻译官”——浏览器驱动,来和浏览器通信。

浏览器驱动名称下载地址
ChromeChromeDriverhttps://chromedriver.chromium.org/
FirefoxGeckoDriverGitHub - mozilla/geckodriver: WebDriver Classic proxy for automating Firefox through Marionette · GitHub
EdgeEdgeDriverhttps://developer.microsoft.com/edge/tools/webdriver/

⚠️重要:驱动的版本必须与浏览器版本匹配。在Chrome地址栏输入chrome://version/可以查看版本号。

2.3 配置驱动

方法一(推荐):下载后将驱动放到Python安装目录的Scripts文件夹

方法二:在代码中指定驱动路径

方法三(最省心):使用WebDriver Manager自动管理

2.4 验证安装

如果浏览器成功打开并显示百度首页,说明环境配置成功!

三、核心API——必须掌握的技能

3.1 浏览器控制

⚠️注意quit()会关闭所有窗口并结束会话,close()只关闭当前窗口。测试结束后务必调用quit()

3.2 元素定位——自动化核心

Web页面上有各种元素:按钮、输入框、链接、图片……要操作它们,首先要找到它们。

定位方式优先级:ID > CSS > XPATH

定位方式示例稳定性
IDdriver.find_element(By.ID, "username")最稳定
NAMEdriver.find_element(By.NAME, "password")稳定
CLASS_NAMEdriver.find_element(By.CLASS_NAME, "btn")可能变化
CSS_SELECTORdriver.find_element(By.CSS_SELECTOR, "#login .btn")灵活
XPATHdriver.find_element(By.XPATH, "//input[@id='username']")易碎

💡选择原则:优先用ID → 其次用NAME → 然后用CSS_SELECTOR → 最后才用XPATH。

3.3 元素操作

找到元素之后,就可以对它进行操作了:

操作方法作用
点击element.click()点击按钮、链接
输入element.send_keys("文本")在输入框输入文字
清空element.clear()清空输入框
获取文本element.text获取元素的文字
获取属性element.get_attribute("href")获取链接地址

3.4 等待机制——防失败核心

为什么要等待?页面加载需要时间。如果脚本执行太快,元素还没出现,就会报错NoSuchElementException

三种等待方式

等待方式代码说明
强制等待time.sleep(3)固定时间,不推荐
隐式等待driver.implicitly_wait(10)全局生效,找不到元素时等待
显式等待WebDriverWait(...).until(...)针对特定元素,最推荐

💡最佳实践:用显式等待代替time.sleep()。强制等待浪费3秒,显式等待可能在0.5秒后元素出现就继续执行。

四、实战——自动化登录测试

结合前三篇文章的登录功能,我们来编写完整的自动化测试脚本。

4.1 测试场景

  • 输入正确用户名和密码,点击登录,验证登录成功

  • 输入错误密码,验证错误提示

4.2 完整代码

五、进阶技巧——企业级应用

5.1 Page Object模式(POM)

当页面越来越复杂,脚本会变得难以维护。Page Object模式将页面元素和操作封装成类,测试脚本调用这些类的方法。

Page Object的优势:业务逻辑与元素定位分离,页面变化时只需修改Page类,维护成本降低50%以上。

5.2 无头模式

在服务器上执行自动化时,不需要弹出浏览器窗口。无头模式可以节省资源。

📌 核心要点总结

Selenium快速上手指南

元素定位优先级

等待机制选择

场景推荐方式
页面跳转、元素动态加载显式等待
全局默认等待隐式等待
调试时观察强制等待(time.sleep)

常见问题与解决

问题可能原因解决方案
找不到元素元素未加载完成使用显式等待
元素不可点击被遮挡或未启用等待元素可点击状态
驱动版本不匹配浏览器自动更新了重新下载匹配版本
脚本执行太快没有等待添加等待机制

今天是软件测试系列的第四篇。我们学习了:

  1. Selenium原理:客户端-服务器模式,通过浏览器驱动控制浏览器

  2. 环境搭建:安装Selenium、下载驱动、配置路径

  3. 核心API:浏览器控制、元素定位、元素操作

  4. 等待机制:显式等待是黄金标准

  5. Page Object模式:企业级最佳实践

Selenium是最流行的Web自动化框架,掌握它是测试工程师的必备技能。下一步可以学习pytest测试框架和CI/CD集成。

http://www.gsyq.cn/news/1475429.html

相关文章:

  • 用Arduino Nano和ESP32玩转TDS水质检测:从传感器接线到数据滤波的完整实战
  • 2026 南宁黄金回收实地测评,无套路变现全攻略 - 奢侈品回收评测
  • STM32F407用普通IO口驱动ADS1118的软SPI完整工程包
  • github无法访问时,如何用快马ai快速生成web应用原型
  • ComfyUI-SUPIR内存访问冲突深度解析与多维度解决方案
  • Horos医学影像查看器:在macOS上免费实现专业级影像分析的5个关键步骤
  • d2s-editor:5分钟掌握暗黑破坏神2存档修改的终极可视化工具
  • FastGithub 3分钟极速指南:让你的GitHub访问体验飞起来
  • SpeechScore:16种专业语音质量评估指标的终极指南
  • 深圳新房开荒保洁避坑指南:收费行情与靠谱服务商横向评测
  • 温州购宠全攻略|浙南滨海高湿台风季养宠避坑 + 伴西西双直营店 + 全城 5 家正规宠物店 - 资讯速览
  • MATLAB版指派问题求解工具:匈牙利算法实现+随机成本矩阵生成
  • 别再只用TensorBoard了!用Visdom给你的PyTorch/YOLOv5训练做个实时监控大屏
  • 2026年智能门锁质量选购指南:国内TOP3品牌实测对比与行业趋势解析
  • Unitree Go2 ROS2 SDK:四足机器人开发者的无线感知与控制解决方案
  • 50题刷题总结
  • 计算机毕业设计之django基于 Hadoop技术贝壳网商品房租赁数据分析与可视化
  • 【数据库系统原理】第4篇:关系数据结构的形式化定义:域、笛卡尔积与关系模式
  • 2026年6月有实力的截止阀制造商哪家靠谱,手动蝶阀/半球阀/三通球阀/电动调节阀/旋启止回阀,截止阀供应厂家有哪些 - 品牌推荐师
  • 医疗废水处理的进步你看到了吗?
  • 深度解析Deep-Live-Cam:三秒实现实时人脸替换的AI魔法
  • 上海全城免费上门回收黄金,收的顶18K 金、钻戒、名表奢侈品一站式回收 - 奢侈品回收评测
  • 芜湖Geo优化亲测品牌分享
  • applera1n全面解析:iOS设备激活锁绕过实战指南
  • FPGA流水线加法器设计:从时序瓶颈到高频实现的Verilog实战
  • 2026 新手成都黄金回收科普,权威连锁收的顶,教你避开虚标报价圈套 - 奢侈品回收评测
  • 流式输出:让 Agent 的回答边生成边显示,前端到底怎么接
  • 2026最全树洞公众号测评|深夜情绪出口TOP5,树洞陪聊温柔、树洞陪玩有趣 - 时时资讯
  • 计算机小程序毕设实战-基于Spring Boot的健康管理小程序基于springboot+小程序的个人健康管理系统小程序【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 红山干果市场里面的特产是不是源头货源?