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

news2024/11/19 6:16:36

目录

什么是 Selenium?

Selenium 的优势是什么?

软件测试的需要

手动测试的挑战

自动化测试胜过手动测试

Selenium 对比 QTP 和 RFT

Selenium 工具套件

Selenium 有哪些组件?

Selenium RC (远程控制)

Selenium IDE(集成开发环境)

什么是 Selenium Grid

什么是 Selenium WebDriver

Selenium WebDriver 的好处

Selenium WebDriver 的缺点


什么是 Selenium?

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

Selenium 的优势是什么?

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

selenium自动化测试视频教程:2023最新的Selenium自动化测试实战,没有比这个更详细的了_哔哩哔哩_bilibiliicon-default.png?t=N3I4https://www.bilibili.com/video/BV1xv4y1D7ku/?spm_id_from=333.999.0.0

  • 测试脚本可以用以下任何一种编程语言编写:Java、Python、C#、PHP、Ruby、Perl 和 .Net
  • 可以在以下任何操作系统中进行测试:Windows、Mac 或 Linux
  • 可以使用任何浏览器进行测试:Mozilla Firefox、Internet Explorer、Google Chrome、Safari 或 Opera
  • 可以与 TestNGJUnit 等工具集成,以管理测试用例和生成报告
  • 可以与 MavenJenkinsDocker 集成以实现持续测试   但总有缺点吧?
  • 我们只能使用 Selenium 来测试 Web 应用程序。我们无法测试桌面应用程序或任何其他软件
  • 没有针对 Selenium 的保证支持。我们需要利用现有的客户社区
  • 无法对图像进行测试。我们需要将 Selenium 与 Sikuli 集成以进行基于图像的测试
  • 没有本机报告工具。但是我们可以通过将其与 TestNG 或 JUnit 之类的框架集成来解决该问题   首先,让我们了解 Selenium 是如何发展到今天的。所以,让我们按以下顺序来讲解:
  1. 软件测试的诉求
  2. 手工测试的挑战
  3. 自动化测试如何胜过手动测试?
  4. Selenium 与其他测试工具的对比?
  5. Selenium 套件工具

软件测试的需要

  一切都归结为软件测试。当今的技术世界完全由机器控制,它们的行为被驱动它的软件年控制。这些机器会完全按照我们希望的那样运行吗?每一次、任何场合都符合预期吗?这些问题的答案在于软件测试。   归根结底,软件应用程序的成功率将控制你的业务增长。即使对于 Web 应用程序,也可以说同样的话,因为当今大多数企业都完全依赖 Internet。   以任何一家电子商务公司为例。无论是 Amazon 还是 E-Bay 或 Flipkart,他们都依赖其网站上的客户流量以及基于 Web 的移动应用程序上的业务流量。 想象一下,如果发生灾难性事件,例如将许多产品的价格限制在 10 美元以内,这都是由于代码“不那么容易理解”部分中的一个小错误所致。那该怎么办,我们下次如何预防呢? 部署之前测试代码,对吗? 所以,这就是软件测试的需要。但是,Selenium 是什么?它是软件测试工具吗?好吧,Selenium 是一种自动化测试工具!   进一步之前,请让我澄清一下,软件测试有两种类型:手动测试和自动化测试。Selenium 作为一种自动化测试工具被创建,旨在克服手动测试的弊端/局限性。因此,接下来,让我们了解手动测试的挑战。

手动测试的挑战

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

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

自动化测试胜过手动测试

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

 

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

Selenium 对比 QTP 和 RFT

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

特性HP QTPIBM RFTSelenium
授权需要需要开源
费用开源
软件客户支持HP 专有支持IBM 专有支持开源社区
脚本执行期间的硬件消耗
编码经验不需要需要需要足够的编码技巧和经验
环境支持仅支持 Windows仅支持 WindowsWindows,Linux,Solaris OS X(如果存在浏览器和 JVM或 JavaScript 支持)
语言支持VB ScriptJava 和 C#Java、C#、Ruby、Python、Perl、PHP 和 JavaScript

  从上表可以很清楚地看出 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 成为双组件工具。

  1. Selenium RC 服务器
  2. Selenium RC 客户端 – 包含编程语言代码的库

  RC Server 使用简单的 HTTP GET / POST 请求进行通信。查看下图以了解 RC 架构。

selenium自动化测试视频教程:2023最新的Selenium自动化测试实战,没有比这个更详细的了_哔哩哔哩_bilibiliicon-default.png?t=N3I4https://www.bilibili.com/video/BV1xv4y1D7ku/?spm_id_from=333.999.0.0

  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。

selenium自动化测试视频教程:

2023最新的Selenium自动化测试实战,没有比这个更详细的了_哔哩哔哩_bilibiliicon-default.png?t=N3I4https://www.bilibili.com/video/BV1xv4y1D7ku/?spm_id_from=333.999.0.0

 

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

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

相关文章

MIT6824——lab2(实现一个Raft库)的一些实现,问题,和思考

MIT 6824 关于lab2的实现,由于开源许可的问题,代码暂时不开源,下面是自己在实现过程中的思路,遇到的问题,以及总结 1 总结 1.1 raft整个流程 应用程序:kv数据库启动raft库,选举leader&#xf…

跳槽前,把自己逼成卷王...

前段时间席卷全互联网行业的内卷现象,想必有不少人都深陷其中。其实刚开始测试行业人才往往供不应求,而在发展了十几年后,很多人涌入这个行业开始面对存量竞争。红利期过去了,仅剩内部争夺。 即便如此,测试行业仍有许…

AspNetCore中的配置文件详解

1 配置文件 程序开发中,有些信息是要根据环境改变的,比如开发环境的数据库可能是本地数据,而生产环境下需要连接生产数据库,我们需要把这些信息放到程序外面,在程序运行时通过读取这些外部信息实现不改变程序代码适应…

计算机图形学-GAMES101-8

引言 着色是针对某一个点(片段)的应用,这里需要考虑着色的频率。  漫反射项代表光向四面八方均匀的反射出去,和观察方向无关。  Blinn-Phong反射模型结构如下: ) 一、Blinn-Phong模型 (1)Specular 什么时候才能看到…

SpringBoot实操篇1

一、工程打包与运行(windows版) 在浏览器中就可以访问到了,此时IDEA并没有启动。服务器就是命令行窗口。 跳过测试:可以看到多了很多数据,是因打包的时候将功能测试了一遍。在IDEA中可以关掉。 注意:必须…

nginx+php+mysql安装以及环境的搭建

目录 一、nginx的安装 二、php的下载安装 1.进入到/usr/local/下,下载php的安装包 2.解压 3.进入到php-8.2.6下,安装需要的依赖包 4.预编译php 5.编译 6.为php提供配置文件 7.为php-fpm提供配置文件 8.添加用户和用户组 9.修改php-fpm.conf配置…

JavaScript全解析-this指向

this指向(掌握) ●this 是一个关键字,是一个使用在作用域内的关键字 ●作用域分为全局作用域和局部作用域(私有作用域或者函数作用域) 全局作用域 ●全局作用域中this指向window 局部作用域 ●函数内的 this, 和 函…

OS之作业调度算法

目录 一、基本概念 二、先来先服务算法(FCFS) 三、短作业算法(SJF/SPF) 四、轮转调度算法(RR) 五、优先级调度算法 六、多级反馈队列调度算法 一、基本概念 T(周转)T(完成)-T(到达) 二、先来先服务算法(FCFS) 不利于短作业,非抢占式算法 算法思想&#xff…

Linux日志文件服务器搭建

文章目录 Linux日志文件服务器搭建节点规划案例实施(1)修改主机名(2)配置日志服务器(3)重新启动查看rsyslogd(4)配置客户端(5)测试 Linux日志文件服务器搭建 节点规划 IP主机名节点192.168.100.10serverlog日志服务器192.168.100.20clientlog日志客户端 必须两台机器可以ping…

IPv6之组播地址分类

本文目录 1、IPv6组播地址的结构2、特殊的预留地址和预留组播地址 1、IPv6组播地址的结构 IPv6组播地址是由固定的8bit地址前缀FF::/8,4bit的标志位,4bit组播范围和112bit多播组标识符(组ID)组成 FF::/8 IPv6的组播地址的最高8bi…

linux环境下设置python定时任务

linux环境下设置python定时任务 Linux 系统提供了使用者控制计划任务的命令 :crontab 命令 1、在linux环境执行命令,进入编辑界面 crontab -e2、按键盘 i 键,进入编辑模式,输入以下内容,设置2个定时任务 定时任务1:每隔10分钟执…

MindFusion.JavaScript Pack 2023.R1 Crack

图表控件添加了径向树布局和套索缩放工具。 2023年5月17日-10:53新版 特征 JavaScript图表中的新增功能 径向树布局-添加了新的类,它将树级别排列在围绕根的同心圆中。 套索缩放工具-控件现在支持使用套索工具进行缩放的几种方法: 可以将行为属性设置为…

单点登录协议

认证和授权 认证:确认该用户的身份是他所声明的那个人 授权:根据用户身份授予他访问特定资源的权限 当用户登录应用系统时,系统需要先认证用户身份,然后依据用户身份再进行授权。认证与授权需要联合使用,才能让用户真…

浏览器网络请求——HTTP详解

文章目录 HTTP 是什么HTTP 发展历程HTTP 1.0HTTP 1.1HTTP 2.0 常用方法头部信息 (Headers)请求头(request Headers响应头(response Headers) 状态码HTTP无状态理解:cookie与session总结 HTTP 是什么 HTTP(Hyper Text T…

【Linux】2.4 第一个小程序——进度条(C语言)

文章目录 character缓冲区的问题:ps. sleep 函数 倒计时进度条1.打印进度条2.让进度条“动起来”3.预留进度条的位置并用提示符显示进度条的状态4.颜色打印只用颜色来表示进度条 character 回车 与 换行 键盘上的 Enter 键: 换行的过程: …

程序员如何成为一名独立开发者?

这里有一个最简单粗暴的方式让你确定你是否能成为一个独立的开发者。 Lv.1 顺畅地完成一个独立外包项目 一个最低成本的试错方式就是去独立地完成一个外包项目,一般来说外包项目的难度较低,但也具有作为开发者必备的大多数流程,如果不确定自…

ChatGPT+小红书爆文,牛!

随着AI技术的不断发展,它已经逐渐渗透到了我们的生活之中,包括内容营销领域。 我们通过AI算法生成文本、优化搜索引擎排名、提高用户体验等,现在AI已逐渐在改变时代的进步,AI也将成为下一个十年的一个变革。我们每个创业者、内容…

Go的开发工具

Go的开发工具 1.VSCode 开源地址: GitHub - microsoft/vscode: Visual Studio Code 官网:https://code.visualstudio.com 好处是免费的,插件多!!! 2.GoLand 收费,是和IDEA是类似的,非常强。…

零基础转行从事云计算运维工作,不得不掌握的几项技能

转行云计算运维已成为今年热门话题之一,面对内卷严重的Java领域,虽然高薪有前景,但是很多人都是望而止步,自己的实力不允许自己卷入这场“高薪职业争夺战”。于是新的IT热门转行职业云计算被重点关注,它会不会成为下一…

如何使用SCQA模型提高表达能力

SCQA架构是“结构化表达”工具。 一、什么是“SCQA架构”?‍ S(Situation)情景——由熟悉的情境或事实引入 C(Complication)冲突——指出实际面临的困境或冲突 Q(Question)疑问——你如何分析…