你知道什么是 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。
特性
HP QTP
IBM RFT
Selenium
授权
须要
须要
开源
用度
高
高
开源软件
客户支持
HP 专有支持
IBM 专有支持
开源社区
脚本实行期间的硬件花费
高
高
低
编码履历
不须要
须要
须要足够的编码技巧和履历
环境支持
仅支持 Windows
仅支持 Windows
Windows,Linux,Solaris OS X(如果存在浏览器和 JVM或 JavaScript 支持)
措辞支持
VB Script
Java 和 C#
Java、C#、Ruby、Python、Perl、PHP 和 JavaScript
从上表可以很清楚地看出 Selenium 是最受青睐的工具。但是 Selenium 中有很多不同的风格,您该当知道哪种 Selenium 工具最适宜你的须要。
Selenium 工具套件Selenium RC (现在已废弃)Selenium IDESelenium GridSelenium WebDriverSelenium 有哪些组件?下面我详细阐明了 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 GridSelenium Grid 由 Patrick Lightbody 开拓,最初称为 HostedQA(最初是 Selenium v1 的一部分),它与 RC 结合利用以在远程打算机上运行测试。实际上,利用 Grid 可以在多台打算机上同时实行多个测试脚本。
借助 Hub-Node 架构实现并行实行。一台机器将承担集线器的角色,其他机器将充当节点。集线器掌握在各种操作系统内的各种浏览器上运行的测试脚本。在不同节点上实行的测试脚本可以用不同的编程措辞编写。
Grid 仍在利用,并且可以与 WebDriver 和 RC 一起利用。但是,利用所有必需的浏览器和操作系统掩护网格是一个寻衅。为此,有多个在线平台可供应在线 Selenium Grid,您可以访问它们以运行 Selenium 自动化脚本。例如,您可以利用 LambdaTest。它具有2000 多种浏览器环境,您可以在这些环境中运行测试,并真正实现跨浏览器测试的自动化。
什么是 Selenium WebDriverSelenium WebDriver 由 Simon Stewart 于 2006 年创立,它是第一个可以从操作系统级别掌握浏览器的跨平台测试框架。与 IDE 比较,Selenium WebDriver 供应了一个编程接口来创建和实行测试用例。编写测试用例,以便识别网页上的 Web 元素,然后对这些元素实行操作。
WebDriver 是 RC 的升级,由于它速率更快。它更快,由于它可以直接调用浏览器。另一方面,RC 须要 RC 做事器与 Web 浏览器进行交互。每个浏览器都有自己的驱动程序,运用程序可以在该驱动程序上运行。不同的 WebDrivers 是:
Firefox Driver (Gecko Driver)Chrome DriverInternet Explorer DriverOpera DriverSafari Driver andHTM Unit DriverSelenium WebDriver 的好处支持 7 种编程措辞:JAVA、C#、PHP、Ruby、Perl、Python 和 .Net支持在不同浏览器进行测试,如:Firefox、Chrome、IE、Safari支持在不同操作系统上实行测试,如:Windows、Mac、Linux、Android、iOS战胜了 Selenium v1 的局限性,例如文件上传、下载、弹出窗口和对话栏Selenium WebDriver 的缺陷无法天生详细的测试报告无法测试图像不管紧致什么寻衅,这些缺陷都可以通过与其他框架集成来战胜。对付测试图像,可以利用 Sikuli,对付天生详细的测试报告,可以利用 TestNG。