Selenium自动化测试实战之自动化测试基础
自动化测试概念
是把以人为驱动的测试转化为机器执行的一种过程,它是一种以程序测试程序的过程。
自动化只是测试方式,跟测试阶段无关。
可以把任何测试工作写一个程序自动化实现都可以称为自动化测试。
selenium自动化测试:2023最新的Selenium自动化测试实战,没有比这个更详细的了_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1xv4y1D7ku/?spm_id_from=333.999.0.0
分层的自动化测试
传统自动化测试:基于产品UI层的自动化测试,将黑盒功能测试转化为由程序或工具执行的一种自动化测试。
分层自动化测试:从黑盒(UI)单层到黑盒和白盒多层的自动化测试,即从全面黑盒自动化测试到对系统的不同层次进行的自动化测试。
- 单元自动化测试:单元自动化测试是指对软件中的最小可测试单元进行检查和验证。
- 接口自动化测试:Web应用的接口自动化测试大体分为两类:模块接口测试和协议接口测试。
- 模块接口测试:主要测试程序模块之间的调用与返回。它主要强调对一个可实现完整功能的类、方法或函数的调用的测试。
- 协议接口测试:主要测试对网络传输协议的调用,如HTTP/SOAP等,一般应用在前端和后端开发之间,以及不同项目之间。
- UI自动化测试:UI自动化测试以实现手工测试用例为主,可降低系统功能回归测试的成本(人力成本和时间成本)。
什么样的项目适合做自动化测试
- 软件需求变更不频繁
- 项目周期较长
- 自动化测试脚本可重复使用
- 任务测试明确,不会频繁变动
- 每日构建后的验证测试
- 比较频繁的回归测试
- 软件系统界面稳定,变化少
- 需要在多平台运行相同的测试用例、组合遍历型的测试、大量的重复测试
- 软件维护周期长
- 项目进度压力不太长
- 被测系统软件开发比较规范,能够保证系统的可测试性
- 具备大量的自动化测试平台
- 测试人员具备较强的编程能力
自动化测试的目的
不是为了找Bug,而是为了回归测试缩短软件的发布周期,节约成本。
自动化测试的介入时间
一般是在系统测试阶段开始介入,多用于系统测试的回归测试。
(一般是系统测试阶段,具体是核心功能手工测试做完之后开始编写自动化脚本。)
自动化测试流程
可行性分析 → 测试需求分析 → 指定测试计划 → 自动化测试设计 → 测试脚本开发 → 无人职守测试 → 提交测试报告 → 脚本维护阶段
自动化测试工具
QTP:收购后改名成UTF。商业版,适用于B/S和C/S的自动化。
Selenium:是一款用于B/S架构的软件测试工具,它支持多平台、多语言、多浏览器去实现自动化测试.
Robot Framework:简称RF,支持关键字驱动。可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。
Appium:手机APP自动化测试工具。
Selenium简介
Selenium经历了三个大版本,Selenium1.0、Selenium2.0和Selenium3.0。Selenium不是由单独一个工具构成,而是由一些插件和类库组成,这些插件和类库有其各自的特点和应用场景。
Selenium1.0家族关系
- Selenium1.0
- (1) Selenium IDE
Selenium IDE是嵌入在Firefox浏览器中的一个插件,可实现简单的浏览器操作的录制与回访功能。 - (2) Selenium Grid
Selenium Grid是一个自动化测试辅助工具。利用Grid可以很方便地实现在多台机器上或异构环境中运行测试用例。 - (3) Selenium RC
SeleniumRC(Remote Control)是Selenium家族的核心部分,支持多种不同语言编写的自动化测试脚本。把Selenium RC的服务器作为代理服务器去访问应用,即可达到测试的目的。
Selenium RC分为Client Libraries和Selenium Server两部分。Client Libraries主要用于编写测试脚本,负责控制Selenium Server的库。Selenium Server负责控制浏览器行为。
Selenium Server主要分为三部分:Selenium Core、Launcher和Http Proxy。Selenium Core就是一堆JavaScript函数的集合。通过这些JavaScript函数,我们可以用程序对浏览器进行操作。Launcher用于启动浏览器,把Selenium Core加载到浏览器页面当中,同时,把浏览器的代理设置为Http Proxy。
- (1) Selenium IDE
- Selenium2.0
Selenium2.0把WebDriver加到了Selenium1.0这个家族中,简单用公式表示:
Selenium2.0 = Selenium1.0 + WebDriver
需要注意的是,在Selenium2.0中主推的是WebDriver,可以将其看作Selenium RC的替代品。为了保持向下的兼容性,Selenium2.0并没有彻底抛弃Selenium RC。- Selenium RC与WebDriver的工作方式有着本质的区别
Selenium RC是浏览器中运行JavaScript应用,使用浏览器内置的JavaScript翻译器来翻译和执行selenese的(selenese是Selenium命令集合)。
WebDriver通过原生浏览器支持或者浏览器扩展来直接控制浏览器。WebDriver是针对各个浏览器而开发的,取代了嵌入被测Web应用中的JavaScript。WebDriver与浏览器紧密集成,支持创建更高级的测试,避免了JavaScript安全模型导致的限制。除来自浏览器厂商的支持外,WebDriver还可利用操作系统级的调用,模拟用户输入。
Selenium与WebDriver原本属于两个不同的项目,WebDriver的创建者Simon Stewart早在2009年8月的一封邮件中解释了项目合并的原因。 - Selenium与WebDriver合并的原因
为何把两个项目合并?一部分原因是WebDriver解决了Selenium的缺点(例如,能够绕过JavaScript沙箱),另一部分原因是Selenium解决了WebDriver存在的问题(例如,支持广泛的浏览器),还有一部分原因是Selenium的主要贡献者和我都觉得合并项目是为用户提供最优秀框架的最佳途径。
- Selenium RC与WebDriver的工作方式有着本质的区别
- Selenium3.0
2016年7月,Selenium3.0悄悄发布了第一个beta版。Selenium3.0做了以下更新。- (1) 去掉了Selenium RC,简单用公式表示如下:
Selenium3.0 = Selenium2.0 - Selenium RC - (2) Selenium3.0只支持Java8以上版本
- (3) Selenium3.0中的Firefox浏览器驱动独立了。Selenium2.0浏览器默认是集成Firefox浏览器驱动的,在Selenium3.0中,Firefox浏览器和Chrome浏览器一样,在使用前需要下载和设置浏览器驱动。
- (4) mac OS操作系统集成了Safari的浏览器驱动,该驱动默认在/usr/bin/safaridriver目录下。
- (5) 只支持IE9.0以上版本。
- (1) 去掉了Selenium RC,简单用公式表示如下:
- Selenium IDE
Selenium IDE同样是Selenium的家族成员。Selenium IDE有两个版本,旧版的Selenium IDE是基于Firefox浏览器扩展的,它提供了比较完备的自动化功能,如脚本录制/回放、定时任务等;还可以将录制的脚本导成不同编程语言的Selenium测试脚本,这在很大程度上可以帮助新手编写测试用例。但旧版的Selenium IDE不支持Firefox新版本支持的API,因此Selenium团队重新开发了新版的Selenium IDE,可以同时支持Chrome、Firefox以及其他浏览器。
项目地址:
appium简介
appium是当前移动平台上主流的自动化测试工具之一。
appium是一个合成词,分别由“application”的前三个字母和“Selenium”的后三个字母组成。application为“应用”,我们一般把移动平台上的应用简称为App。Selenium是当前主流的Web UI自动化测试工具。appium与Selenium之间是有继承关系的。appium的寓意是:移动端的Selenium自动化测试工具。
appium是一个开源自动化测试工具,支持iOS和Android平台上的原生应用、Web应用以及混合应用。
- 原生应用
是指那些用iOS或者Android SDK开发的应用(App)。 - Web应用
是指可以使用移动浏览器(如iOS上的Safari和Android上的Chrome)访问的应用。 - 混合应用
是指原生代码封装网页视图,原生代码和Web内容交互的应用。比如,微信小程序,可以帮助开发者使用网页技术开发应用,然后用原生代码封装。
更重要的是,appium是一个跨平台的测试工具,它允许测试人员在不同平台(iOS、Android)使用同一套API编写自动化测试脚本,这大大增加了iOS和Android测试套件之间代码的复用性。
appium与Selenium
appium类库封装了标准Selenium客户端类库,为用户提供常见的JSON格式的Selenium命令,以及额外的移动设备控制相关的命令,如多点触控手势和屏幕方向等操作。
appium客户端API实现了Mobile JSON Wire Protocol(一个标准协议的官方扩展草稿)和W3C WebDirver spec(一个传输不可预知的自动化协议,该协议定义了MultiAction接口)的元素。
appium服务器定义了官方协议的扩展,为appium用户提供方便的接口来执行各种设备动作,例如,在测试过程中安装/卸载App等。这也是我们需要安装appium特定的客户端,而不是通用的Selenium客户端的原因。当然,appium客户端API只是增加了部分操作,在Selenium客户端的基础上进行了简单的扩展,因此它们仍然可以用来运行通用的Selenium会话。
selenium自动化测试:2023最新的Selenium自动化测试实战,没有比这个更详细的了_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1xv4y1D7ku/?spm_id_from=333.999.0.0
相关文章:

Selenium自动化测试实战之自动化测试基础
自动化测试概念 是把以人为驱动的测试转化为机器执行的一种过程,它是一种以程序测试程序的过程。 自动化只是测试方式,跟测试阶段无关。 可以把任何测试工作写一个程序自动化实现都可以称为自动化测试。 selenium自动化测试:2023最新的Sele…...
vue3+vite中使用postcss-px-to-viewport适配问题
适配方案postcss-px-to-viewport使用过程中出现以下问题: postcss-px-to-viewport 不适配最新版本的postcss8 ⚠️报错: postcss-px-to-viewport: postcss.plugin was deprecated. Migration guide: https://evilmartians.com/chronicles/postcss-8-plugin-migrati…...

web测试与app测试的区别
web测试与app测试的区别 首先从系统架构来看的话: web项目,一般都是b/s架构,基于浏览器的,而app则是c/s的,必须要有客户端。那么在系统测试测试的时候就会产生区别了。 web测试只要更新了服务器端,客户端…...
深入理解高并发编程 - 分析创建线程池究竟有哪些方式
1、使用Executors工厂方法: 使用Executors工厂方法创建线程池是一种简单快捷的方式,适用于一些常见的线程池需求。以下是几个示例,演示如何使用Executors工厂方法创建不同类型的线程池: 固定大小线程池 (newFixedThreadPool)&am…...

Kafka第一课概述与安装
生产经验 面试重点 Broker面试重点 代码,开发重点 67 章了解 如何记录行为数据 1. Kafka概述 1.产生原因 前端 传到日志 日志传到Flume 传到HADOOP 但是如果数据特比大,HADOOP就承受不住了 2.Kafka解决问题 控流消峰 Flume传给Kafka 存到Kafka Hadoop 从Kafka…...

Linux MQTT智能家居项目(智能家居界面布局)
文章目录 前言一、创建工程项目二、界面布局准备工作三、正式界面布局总结 前言 一、创建工程项目 1.选择工程名称和项目保存路径 2.选择QWidget 3.添加保存图片的资源文件: 在工程目录下添加Icon文件夹保存图片: 将文件放入目录中: …...

【Vue3】Vue3 UI 框架 | Element Plus —— 创建并优化表单
安装 # NPM $ npm install element-plus --save // 或者(下载慢切换国内镜像) $ npm install element-plus -S// 可以选择性安装 less npm install less less-loader -D // 可以选择性配置 自动联想src目录Element Plus 的引入和注入 main.ts import…...

如何基于 ACK Serverless 快速部署 AI 推理服务
作者:元毅 随着 AI 浪潮的到来,各种 AI 应用层出不穷,众所周知 AI 应用对 GPU 资源强烈依赖,但 GPU 很昂贵,如何降低 GPU 资源使用成本成为用户首要问题。而 AI 与 Serverless 技术结合,完全可以达到按需使…...

【奥义】如何用ChatGPT写论文搞模型
目录 你是否曾经在复现科研论文的结果时感到困难重重? 引言 1 打开需要复现的目标文献 2 提取公式定义的语句 3 文章公式、图实现 (1)用python复现目标文献中的公式 (2)用python复现目标文献中的图 4 Copy代码…...

欢迎光临,博客网站
欢迎光临:YUNYE博客~https://yunyeblog.com/更多的文章,供大家参考学习!!!...

通过TightVNC远程访问MacOS
目录 一、下载 TightVNC 下载链接:https://www.tightvnc.com/ 下载后按步骤进行安装,安装完成后安装目录如下: 运行 tvnviewer.exe,输入远程 IP,点击【connect】: 输入密码,点击【OK】后即可远…...

智安网络|网络安全:危机下的创新与合作
随着信息技术的迅猛发展和互联网的普及,我们进入了一个高度网络化的社会。网络在提供便利和连接的同时,也带来了许多安全隐患和挑战。 一、网络安全的危险 **1.数据泄露和隐私侵犯:**网络上的个人和机构数据存在遭受泄露和盗取的风险&#…...

从系统角度,看智能制造|百世慧®
7月31日我们结束了智能制造专题第二期“电池智能制造质量管理应用及案例分享”的线上研讨会,有不少朋友没有来得及参加智能制造专题第一期研讨会,同时又工作繁忙。所以!今天就由我百小能为大家快速讲解第一期研讨会——“电池智能制造应用”的…...
Dubbo 与 gRPC、Spring Cloud、Istio 的关系
很多开发者经常会问到 Apache Dubbo 与 Spring Cloud、gRPC 以及一些 Service Mesh 项目如 Istio 的关系,要解释清楚它们的关系并不困难,你只需要跟随这篇文章和 Dubbo 文档做一些更深入的了解,但总的来说,它们之间有些能力是重合…...
【uniapp 中使用uni-popup阻止左滑退出程序】
在uniapp中,可以使用uni-app插件uni-popup提供的阻止左滑退出程序的功能。具体步骤如下: 安装uni-popup插件:在HBuilderX编辑器中,打开manifest.json文件,找到“dependencies”字段,在其后添加:…...

netty学习分享(一)
TCP与UDP TCP 是面向连接的、可靠的流协议,通过三次握手建立连接,通讯完成时要拆除连接。 UDP是面向无连接的通讯协议,UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出现丢包现象 端口号: 端口号用…...

前端跨域问题解决方法
跨域是WEB浏览器专有的同源限制访问策略。(后台接口调用和postman等工具会出现) 跨源资源共享(CORS,或通俗地译为跨域资源共享)是一种基于 HTTP 头的机制,该机制通过允许服务器标示除了它自己以外的其他源(域、协议或端…...
html基础面试题 html的元素居中的常用方法(基础知识温习)
html基础面试题 & html的元素居中的常用方法日常温习 1,使用text-align: center;属性: 对于内联元素(如文本或图片),可以将其父元素的text-align属性设置为center。 <div style"text-align: center;&quo…...

VScode如何设置中文教程
前言:打开VSCode软件,可以看到刚刚安装的VSCode软件默认使用的是英文语言环境,但网上都是vscode中文界面教你怎么设置中文,可能不利于小白阅读,所以重装vscode,手摸手从英文变成中文。 设置为中文 打开VS…...

SpringCloud中 Sentinel 限流的使用
引入依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency>手动编写限流规则,缺点是不够灵活,如果需要改变限流规则需要修改源码…...

Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...

CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...

【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...

Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

android RelativeLayout布局
<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...

水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关
在水泥厂的生产流程中,工业自动化网关起着至关重要的作用,尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关,为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多,其中不少设备采用Devicenet协议。Devicen…...