什么是Selenium?使用Selenium进行自动化测试

什么是 Selenium?
  Selenium 是一种开源工具,用于在 Web 浏览器上执行自动化测试(使用任何 Web 浏览器进行 Web 应用程序测试)。   等等,先别激动,让我再次重申一下,Selenium 仅可以测试Web应用程序。我们既不能使用 Selenium 测试任何桌面(软件)应用程序,也不能测试任何移动应用程序。   这很糟糕,对吧?我能感觉到你的痛苦。但请放心,有许多工具可以测试桌面软件和移动应用程序,例如:IBM 的 RFT,HP 的 QPT,Appium 等。但是,本文的重点是测试动态 Web 应用程序,以及为什么 Selenium 在这方面是最好的。

Selenium 的优势是什么?
  由于 Selenium 是开源的,因此不涉及许可费用,这是与其他测试工具相比的主要优势。Selenium 日益流行的其他原因是:

测试脚本可以用以下任何一种编程语言编写:Java、Python、C#、PHP、Ruby、Perl 和 .Net
可以在以下任何操作系统中进行测试:Windows、Mac 或 Linux
可以使用任何浏览器进行测试:Mozilla Firefox、Internet Explorer、Google Chrome、Safari 或 Opera
可以与 TestNG 和 JUnit 等工具集成,以管理测试用例和生成报告
可以与 Maven、Jenkins 和 Docker 集成以实现持续测试   但总有缺点吧?
我们只能使用 Selenium 来测试 Web 应用程序。我们无法测试桌面应用程序或任何其他软件
没有针对 Selenium 的保证支持。我们需要利用现有的客户社区
无法对图像进行测试。我们需要将 Selenium 与 Sikuli 集成以进行基于图像的测试
没有本机报告工具。但是我们可以通过将其与 TestNG 或 JUnit 之类的框架集成来解决该问题   首先,让我们了解 Selenium 是如何发展到今天的。所以,让我们按以下顺序来讲解:
软件测试的诉求
手工测试的挑战
自动化测试如何胜过手动测试?
Selenium 与其他测试工具的对比?
Selenium 套件工具
软件测试的需要
  一切都归结为软件测试。当今的技术世界完全由机器控制,它们的行为被驱动它的软件年控制。这些机器会完全按照我们希望的那样运行吗?每一次、任何场合都符合预期吗?这些问题的答案在于软件测试。   归根结底,软件应用程序的成功率将控制你的业务增长。即使对于 Web 应用程序,也可以说同样的话,因为当今大多数企业都完全依赖 Internet。   以任何一家电子商务公司为例。无论是 Amazon 还是 E-Bay 或 Flipkart,他们都依赖其网站上的客户流量以及基于 Web 的移动应用程序上的业务流量。 想象一下,如果发生灾难性事件,例如将许多产品的价格限制在 10 美元以内,这都是由于代码“不那么容易理解”部分中的一个小错误所致。那该怎么办,我们下次如何预防呢? 部署之前测试代码,对吗? 所以,这就是软件测试的需要。但是,Selenium 是什么?它是软件测试工具吗?好吧,Selenium 是一种自动化测试工具!   进一步之前,请让我澄清一下,软件测试有两种类型:手动测试和自动化测试。Selenium 作为一种自动化测试工具被创建,旨在克服手动测试的弊端/局限性。因此,接下来,让我们了解手动测试的挑战。

手动测试的挑战
  手动测试是指 QA 测试人员手动测试(Web)应用程序。需要在每个环境中使用不同的数据集手动执行测试,并且应记录每个事务的成功/失败率。

  看看上图中这个糟糕的小伙子,他要手动验证记录的交易。他正面临的挑战会导致疲劳、无聊、工作延迟、错误和失误(由于手动操作)。这导致了 Selenium(自动化测试工具)的发明。

自动化测试胜过手动测试
  每次自动化测试都胜过手动测试。为什么?因为它速度更快,需要的人力资源投资较少,所以不容易出错,可以频繁执行测试,支持无人值守执行,支持回归测试以及功能测试。   让我们举一个与前面提到的类似的例子。假设有一个登录页面,我们需要验证所有的登录尝试是否成功,那么很容易编写一段代码来验证所有的事务/登录尝试是否成功(自动测试用例执行)。   此外,可以以在不同环境和 Web 浏览器中对它们进行测试的方式配置这些测试。我们还能做些什么?您可以通过安排一天中的特定时间来自动生成结果文件。然后,您还可以根据这些结果自动生成报告。   关键是自动化测试使测试人员的工作变得更加简单。如下图所示,显示了一个更宽松的环境,同样的测试人员正在工作。

  现在,让我特别谈谈 Selenium。   让我们看看 Selenium 在市场上的地位。

Selenium 对比 QTP 和 RFT

  我在下表中将其性能与其他两个流行工具进行了比较:QTP和RFT。

  从上表可以很清楚地看出 Selenium 是最受青睐的工具。但是 Selenium 中有很多不同的风格,您应该知道哪种 Selenium 工具最适合你的需要。

Selenium 工具套件
Selenium RC (现在已废弃)
Selenium IDE
Selenium Grid
Selenium WebDriver
Selenium 有哪些组件?
  下面我详细解释了 Selenium 的各个组成:

Selenium RC (远程控制)
  在谈论 Selenium RC 的细节之前,我想回过头来谈谈 Selenium 项目中的第一个工具。Selenium Core 是第一个工具。但是,由于采用了同源策略,Selenium Core 在跨域测试方面遇到了障碍。同源策略禁止 JavaScript 代码访问与启动 JavaScript 的位置不同的域上托管的 Web 元素。   为了克服同源策略问题,测试人员需要安装 Selenium Core(JavaScript程序)和包含要测试的 Web 应用程序的 Web 服务器的本地副本,以便它们属于同一域。这导致了 Selenium RC 的诞生,这是当时 ThoughtWork 的工程师 Paul Hammant 认可的。RC 通过使用 HTTP 代理服务器来“欺骗”浏览器,使其相信 Selenium Core 和被测试的 Web 应用程序来自同一域,从而解决了该问题。因此,使 RC 成为双组件工具。

Selenium RC 服务器
Selenium RC 客户端 – 包含编程语言代码的库
  RC Server 使用简单的 HTTP GET / POST 请求进行通信。查看下图以了解 RC 架构。

  Selenium 项目的旗舰工具是 Selenium RC,这是他们的第一个工具,可以用来以不同的编程语言编写测试用例。但是 RC 的缺点是与 RC 服务器的每次通信都很耗时,因此RC非常慢。太慢了,有时一次测试要花上几个小时。  从 Selenium v3 开始,RC 已弃用,并转移到遗留软件包中。您依然可以下载并使用 RC,但是很遗憾,已经无法得到支持。但另一方面,为什么要使用一个过时的工具,尤其是当有一个更有效的工具 Selenium WebDriver 时。在谈论WebDriver之前,让我讨论一下IDE 和 Grid,它们是构成 Selenium v1 的其他工具。

Selenium IDE(集成开发环境)
  2006年,日本的 Shinya Kastani 将他的 Selenium IDE 原型捐赠给了 Apache 的 Selenium 项目。这是一个用于快速创建测试用例的 Firefox 插件。IDE 实施了记录和回放模型,其中通过记录用户与 Web 浏览器的交互来创建测试用例。这些测试然后可以播放任意次。   Selenium IDE 的优势在于,通过插件记录的测试可以以不同的编程语言导出,例如:Java、Ruby、Python 等。请查看以下 Firefox IDE 插件的屏幕截图。

  但是,IDE的相关缺点是:

插件仅适用于 Mozilla Firefox;不适用于其他浏览器
无法测试动态 Web 应用程序。只能记录简单的测试
测试用例不能使用编程逻辑编写脚本
不支持数据驱动测试
  这些是 Selenium IDE 的一些方面。现在让我谈谈 Selenium Grid。

什么是 Selenium Grid
  Selenium Grid 由 Patrick Lightbody 开发,最初称为 HostedQA(最初是 Selenium v1 的一部分),它与 RC 结合使用以在远程计算机上运行测试。实际上,使用 Grid 可以在多台计算机上同时执行多个测试脚本。   借助 Hub-Node 架构实现并行执行。一台机器将承担集线器的角色,其他机器将充当节点。集线器控制在各种操作系统内的各种浏览器上运行的测试脚本。在不同节点上执行的测试脚本可以用不同的编程语言编写。

  Grid 仍在使用,并且可以与 WebDriver 和 RC 一起使用。但是,使用所有必需的浏览器和操作系统维护网格是一个挑战。为此,有多个在线平台可提供在线 Selenium Grid,您可以访问它们以运行 Selenium 自动化脚本。例如,您可以使用 LambdaTest。它具有2000 多种浏览器环境,您可以在这些环境中运行测试,并真正实现跨浏览器测试的自动化。

什么是 Selenium WebDriver
  Selenium WebDriver 由 Simon Stewart 于 2006 年创立,它是第一个可以从操作系统级别控制浏览器的跨平台测试框架。与 IDE 相比,Selenium WebDriver 提供了一个编程接口来创建和执行测试用例。编写测试用例,以便识别网页上的 Web 元素,然后对这些元素执行操作。   WebDriver 是 RC 的升级,因为它速度更快。它更快,因为它可以直接调用浏览器。另一方面,RC 需要 RC 服务器与 Web 浏览器进行交互。每个浏览器都有自己的驱动程序,应用程序可以在该驱动程序上运行。不同的 WebDrivers 是:

Firefox Driver (Gecko Driver)
Chrome Driver
Internet Explorer Driver
Opera Driver
Safari Driver and
HTM Unit Driver
Selenium WebDriver 的好处
支持 7 种编程语言:JAVA、C#、PHP、Ruby、Perl、Python 和 .Net
支持在不同浏览器进行测试,如:Firefox、Chrome、IE、Safari
支持在不同操作系统上执行测试,如:Windows、Mac、Linux、Android、iOS
克服了 Selenium v1 的局限性,例如文件上传、下载、弹出窗口和对话栏
Selenium WebDriver 的缺点
无法生成详细的测试报告
无法测试图像
  不管紧致什么挑战,这些缺点都可以通过与其他框架集成来克服。对于测试图像,可以使用 Sikuli,对于生成详细的测试报告,可以使用 TestNG。

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

 

资料获取方式 :

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大连交通大学813软件工程考研习题

1.什么是软件生存周期模型?有哪些主要模型? 生存周期模型:描述软件开发过程中各种活动如何执行的模型。对软件开发提供强有力的支持,为开发过程中的活动提供统一的政策保证,为参与开发的人员提供帮助和指导,是软件生存周期模型…

云计算——常见存储类型

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​ 目录 前言 一.存储类型 1.本地磁盘 2.DAS 3.NAS 4.SAN (1)FC SA…

锁定Mac的内置键盘,防止外接键盘时的误触

场景:把你的外接键盘放在mac上,然后打字时,发现外接键盘误触mac键盘,导致使用体验极差 解决方案:下载Karabiner-Elements这款软件,并给它开启相关权限。 地址:https://github.com/pqrs-org/Ka…

ModaHub魔搭社区——Milvus 、Qdrant、Waeviate、Pinecone、ElasticSearch矢量数据库对比

资本市场上,2022年也是风起云涌的一年的,各大向量数据库公司纷纷完成了千万美元级别新一轮的融资。可以预见,2023年将会是向量数据库继续快速发展的一年,也会是这一新兴技术由发展走向成熟的一年。这里针对Milvus 、Qdrant、Waeviate、Pinecone、ElasticSearch这五个流行的…

编写简单的.gitlab-ci.yml打包部署项目

服务器说明: 192.168.192.120:项目服务器 192.168.192.121:GitLab 为了可以使用gitlab的cicd功能,我们需要先安装GitLab Runner 安装GitLab Runner参考: GitLab实现CICD自动化部署_gitlab cidi_程序员xiaoQ的博客-CS…

HCIA---TCP/UDP协议

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目录 前言 一.UDP协议简介 UDP协议的特点: 二.TCP协议简介 TCP协议特点 三.TCP和UDP的区别 四.TCP/IP结构详解 五.TCP运输连接的阶段 ​编辑 …

43..利用fsolve函数解对应lambda下的方程组(matlab程序)

1.简述 fsolve的基本用法 : x fsolve(fun,x0) 其中fun应为函数句柄,x0为搜索的种子,即预估的fun0的解的大致位置。 函数句柄的定义方式主要有两种: 1.定义函数文件,使用操作符 定义function文件root2d.m, 如下: …

怎么把图片表格转换成word表格?几个步骤达成

在处理文档时,图片表格的转换是一个常见的需求。而手动输入表格是非常耗时的,因此,使用文本识别软件来自动转换图片表格可以大大提高工作效率。在本文中,我们将介绍如何使用OCR文字识别技术来将图片表格转换为Word表格。 OCR文字识…

yolov2检测网数据集标注_labelme使用_json2txt格式转换

yolov2检测网数据集标注_labelme使用_json2txt格式转换 一、安装Anaconda二、创建labelme虚拟环境三、使用labelme标注健康非健康猫狗数据3.1 打开数据集所在文件夹3.2 进行标注数据集3.3 json2txt3.4 按文件目录和训练测试数据集重分配 四、数据喂给服务器网络参考链接 一、安…

Paddle OCR V4 测试Demo

效果 项目 VS2022.net4.8OCRV4 代码 using OpenCvSharp; using Sdcb.PaddleInference; using Sdcb.PaddleOCR; using Sdcb.PaddleOCR.Models; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; usin…

[保研/考研机试] KY135 又一版 A+B 浙江大学复试上机题 C++实现

题目链接&#xff1a; KY135 又一版 AB https://www.nowcoder.com/share/jump/437195121691736185698 描述 输入两个不超过整型定义的非负10进制整数A和B(<231-1)&#xff0c;输出AB的m (1 < m <10)进制数。 输入描述&#xff1a; 输入格式&#xff1a;测试输入包…

C语言的简单基础知识

C语言的基础知识包括变量、数据类型、运算符、控制流语句、函数等。下面会对每个部分进行详细解释&#xff0c;并给出相应的案例。 变量和数据类型&#xff1a; 变量&#xff1a;C语言中的变量用于存储数据&#xff0c;并且需要先声明后使用。声明变量时需要指定其数据类型。例…

包管理工具详解npm 、 yarn 、 cnpm 、 npx 、 pnpm(2023)

1、包管理工具npm &#xff08;1&#xff09;包管理工具npm&#xff1a; Node Package Manager&#xff0c;也就是Node包管理器&#xff1b;但是目前已经不仅仅是Node包管理器了&#xff0c;在前端项目中我们也在使用它来管理依赖的包&#xff1b;比如vue、vue-router、vuex、…

怎么用PS的魔术棒抠图?PS魔术棒抠图的操作方法

使用PS的魔术棒抠图教程&#xff1a; 1、首先&#xff0c;在ps界面上方点击“文件”选项&#xff0c;再在其弹出的选项栏中选择“打开”选项。然后&#xff0c;打开你所需要的图片。 2、然后&#xff0c;单击左侧的“魔术棒”工具。 3、然后&#xff0c;用鼠标点击图片的背景&…

根据渲染数据长度动态渲染后缀图标

在动态获取数据时&#xff0c;想要渲染后面的图标是根据数据的长度渲染图标位置&#xff0c;效果如下&#xff1a; 代码如下&#xff1a; <el-row :gutter"60"><el-col :span"24"><el-form-item><el-input v-model.trim"form…

你不能访问此共享文件夹因为你组织的安全策略

我在windows 10中尝试访问没有密码的共享文件只报错如下&#xff1a; 解决办法 运气中执行 gpedit.msc来启动本地组策略编辑器。 这样设置完成后&#xff0c;就可以在运行中输入 \\192.168.199.1\可以访问共享的文件了。 参考 https://zhuanlan.zhihu.com/p/164721714…

从零构建深度学习推理框架-7 计算图的表达式

什么是表达式 表达式就是一个计算过程,类似于如下&#xff1a; output_mid input1 input2 output output_mid * input3用图形来表达就是这样的。 但是在PNNX的表达式&#xff08;Experssion Layer&#xff09;中不是这个样子&#xff0c;而是以一种抽象得方式&#xff0c;…

韩顺平Linux基础篇

一、课程内容 二、Linux应用领域 一、Linux使用在哪些地方 Linux最强应用&#xff1a;服务器 三、Linux概述 三、Linux和Unix的关系 五、VM和Linux的安装 基本说明 学习Linux需要一个环境&#xff0c;我们需要创建一个虚拟机&#xff0c;然后再虚拟机上安装一个Centos系统来学…

【多重信号分类】超分辨率测向方法——依赖于将观测空间分解为噪声子空间和源/信号子空间的方法具有高分辨率(HR)并产生准确的估计(Matlab代码实现)

【多重信号分类】超分辨率测向方法——依赖于将观测空间分解为噪声子空间和源/信号子空间的方法具有高分辨率&#xff08;HR&#xff09;并产生准确的估计&#xff08;Matlab代码实现&#xff09; &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️…

检测文本是否由AI生成,GPT、文心一言等均能被检测

背景 目前很多机构推出了ChatGPT等AI文本检测工具&#xff0c;但是准确率主打一个模棱两可&#xff0c;基本和抛硬币没啥区别。 先说结论&#xff0c;我们对比了常见的几款AI检测工具&#xff0c;copyleaks检测相比较而言最准确。 检测文本 AI文本片段1 来源&#xff1a;G…