Selenium是一个免费的(开放源代码)自动测试套件,适用于不同浏览器和平台的Web应用程序。它非常类似于HP Quick Test Pro(QTP/UFT),只有Selenium专注于基于Web应用程序的自动化。 使用Selenium工具进行的测试通常称为Selenium测试。
Selenium不只是一个单一的工具,而是一套软件,每个软件都可以满足组织的不同测试需求。 它有四个组件。
- Selenium集成开发环境(IDE)
- Selenium远程控制(RC)
- WebDriver
- Selenium Grid
目前,Selenium RC和WebDriver合并组成一个框架:Selenium 2。
谁在开发维护Selenium?
由于Selenium是不同工具的集合,它也有不同的开发人员。 以下是对Selenium项目做出重要贡献的关键人物。
首先,Selenium是由Jason Huggins于2004年创建的。当时TryughtWorks的一名工程师正在研究需要频繁测试的Web应用程序。但很快意识到对应用程序的重复手动测试变得越来越低效,于是他创建了一个JavaScript程序,可以自动控制浏览器的操作。 并且他把这个程序命名为“JavaScriptTestRunner”。
为了帮助自动化测试其他Web应用程序,他把自己创建的JavaScriptRunner开放源代码,后来被重新命名为Selenium Core。
同源政策问题
同源策略禁止JavaScript代码访问与启动地点不同的域中的元素。 例如,www.google.com 中的HTML代码使用JavaScript程序“randomScript.js
”。 相同的原始策略将只允许randomScript.js
访问google.com
中的页面,例如 google.com/mail, google.com/login 或 google.com/signup 。 但是,它不能访问来自不同网站的页面,例如 yahoo.com/search 或 yiibai.com,因为它们属于不同的域。
这就是为什么在Selenium RC之前,测试人员需要安装Selenium Core(JavaScript程序)的本地副本和包含正在测试的Web应用程序的Web服务器,这是将它们属于同一个域中。
Selenium远程控制诞生(Selenium RC)
不幸的是,使用Selenium Core的测试人员必须将整个测试应用程序和本地计算机上的Web服务器进行安装,因为同源策略的限制。 所以另一位ThoughtWork的工程师Paul Hammant决定创建一个服务器,该服务器将作为一个HTTP代理来“欺骗”浏览器,相信Selenium Core和被测试的Web应用程序来自同一个域。这个系统被称为Selenium远程控制(或Selenium 1)。
Selenium Grid诞生
Selenium Grid由Patrick Lightbody开发,以满足尽可能地最小化测试执行时间的需要。 他最初将这个系统称为“托管质量保证”。 它能够在显着的阶段捕获浏览器屏幕截图,并且还可以同时向不同的机器发送Selenium命令。
Selenium IDE诞生
日本的Shinya Kasatani创建了Selenium IDE,这是一个Firefox扩展,可以通过记录和播放功能自动完成浏览器,以进一步提高创建测试用例的速度。他于2006年向Selenium项目捐赠Selenium IDE。
WebDriver的诞生
由于浏览器和Web应用程序变得越来越强大,并且像Selenium Core这样的JavaScript程序更具限制性,Simon Stewart大约在2006年创建了WebDriver。 这是第一个可以从操作系统级别控制浏览器的跨平台测试框架。
Selenium 2的诞生
2008年,整个Selenium团队决定合并WebDriver和Selenium RC,形成一个更强大的工具—以WebDriver为核心的Selenium 2。 目前,Selenium RC仍在开发中(仅在维护模式下)。 Selenium项目的大部分努力现在集中在Selenium 2 中。
为什么叫Selenium?
它来自一个笑话。 在Selenium开发过程中,另一个自动化测试框架很受欢迎,而且被公司称为Mercury Interactive(该公司最初在HP收购之前就已经做了QTP)。 由于Selenium是一种众所周知的汞中毒解毒剂,Jason建议这个名字。他的同伴们也是这么认为的,所以这个框架现在称为叫作:Selenium 。
Selenium IDE简介
Selenium集成开发环境(IDE)是Selenium套件中最简单的框架,是最简单的学习方法。 它是一个Firefox插件,您可以像其他插件那样轻松安装。 然而,由于其简单性,Selenium IDE只能用作原型设计工具。 如果要创建更高级的测试用例,则需要使用Selenium RC或WebDriver。
Selenium IDE优点和缺点
优点 | 缺点 |
---|---|
非常容易使用和安装 | 仅限以FireFox插件形式使用 |
无需撑握任何编程知识,但需要了解基本的HTML和DOM | 仅限于原型测试 |
Selenium远程控制(Selenium RC)简介
Selenium RC是长期以来整个Selenium项目的旗舰测试框架。 这是第一个允许用户使用他们喜欢的编程语言的自动化Web测试工具。 从Selenium 2.25.0版本起,RC可以支持以下编程语言:
- Java
- C#
- PHP
- Python
- Perl
- Ruby
WebDriver简介
WebDriver在许多方面比Selenium IDE和Selenium RC都更好。 它实现了更现代化和稳定的方法来自动化浏览器的操作。 与Selenium RC不同的是,WebDriver不依赖JavaScript进行自动化。通过直接与它通信来控制浏览器。
WebDriver可以支持以下编程语言:
- Java
- C#
- PHP
- Python
- Perl
- Ruby
Selenium Grid简介
Selenium Grid是与Selenium RC一起使用的工具,可以在不同机器和不同浏览器的同时运行并行测试。并行一次执行运行多个测试。
特征:
- 允许在多个浏览器和环境中同时运行测试。
- 节省很多时间。
- 利用集线器和节点概念。集线器作为连接到它的每个节点的Selenium命令的中心源。
关于浏览器和环境支持的注意事项
由于它们的架构差异,Selenium IDE,Selenium RC和WebDriver支持不同的浏览器和操作环境。
工具组件 | 浏览器支持 | 操作系统 |
---|---|---|
Selenium IDE | Mozilla Firefox | Windows, Mac OS X, Linux |
WebDriver | Internet Explorer 版本6 到11 (32位和64位),Microsoft Edge 版本12.10240 及以上(部分支持部分功能正在开发中),Firefox 3.0及以上版本,Google Chrome 12.0 以上版本, Opera 11.5 及以上,Android - 2.3 及以上版本的手机和平板电脑(设备和仿真器),适用于手机(设备和仿真器)的iOS 3+ 和平板电脑(设备和仿真器)的3.2+ 以上版本,HtmlUnit 2.9 及以上版本 |
所有可以运行浏览器的操作系统。 |
注意:
Selenium WebDriver
被称为Selenium RC
的继承者,已被SeleniumHQ正式宣布弃用。
如何按需要选择正确的Selenium工具
1. Selenium IDE
- 了解自动化测试和Selenium的概念,包括:
- Selenese命令如type,open,clickAndWait,assert,verify等等
- 诸如id,name,xpath,css选择器等的定位符
- 使用运行脚本来执行自定义JavaScript代码
- 以各种格式导出测试用例。
- 在编程中创建具有很少或没有先验知识的测试。
- 创建简单的测试用例和测试套件,可以在稍后导出到RC或WebDriver。
- 仅测试针对Firefox的Web应用程序。
2. Selenium RC
- 使用比Selenese更具表现力的语言设计测试
- 在不同的操作系统上针对不同浏览器(HtmlUnit除外)运行测试。
- 使用Selenium Grid在多个环境中部署测试。
- 根据支持JavaScript的新浏览器测试应用程序。
- 使用复杂的基于AJAX的方案测试Web应用程序。
3. WebDriver
- 在设计测试用例时使用某种编程语言。
- 测试丰富的基于AJAX的功能的应用程序。
- 在
HtmlUnit
浏览器上执行测试。 - 创建自定义测试结果。
4. Selenium Grid
- 在多个浏览器和操作系统中同时运行Selenium RC脚本。
- 要运行一个巨大的测试套件,需要尽快完成。
Selenium与QTP(UFT)的比较
Quick Test Professional(QTP)是由Mercury Interactive公司被Hewlett-Packard于2006年收购之前拥有的专有自动测试工具。Selenium工具套件相对于QTP具有许多优点,如下所述 -
Selenium对QTP的优势
Selenium | QTP |
---|---|
开源,免费自由使用 | 商业软件 |
高度可扩展 | 有限的附加组件 |
可以在不同浏览器上运行测试 | 只能在Firefox,Internet Explorer和Chrome中运行测试 |
支持各种操作系统 | 只能在Windows中使用 |
支持移动设备 | QTP支持使用惠普解决方案(HP Mobile Center)的移动应用测试自动化(iOS和Android) |
可以在浏览器最小化时执行测试 | 需要测试的应用程序在桌面上可见 |
可以并行执行测试。 | 只能并行执行,但使用的是付费产品 - 质量中心。 |
QTP对Selenium的优势
Selenium对QTP的优势
QTP | Selenium |
---|---|
可以测试Web和桌面应用程序 | 只能测试Web应用程序 |
附带一个内置对象存储库 | 没有内置的对象存储库 |
自动化比Selenium更快,因为它是一个功能齐全的IDE。 | 自动化速度较慢,因为它没有本地IDE,只有第三方IDE可用于开发 |
数据驱动测试更易于执行,因为它具有内置的全局和本地数据表。 | 数据驱动测试更麻烦,因为必须依靠编程语言功能来设置测试数据的值 |
可以访问浏览器中的控件(如收藏夹栏,地址栏,后退和转发按钮等) | 无法访问测试Web应用程序之外的元素 |
提供专业的客户支持 | 没有提供官方用户支持。 |
具有将测试数据导出到外部格式的本地功能 | 没有将运行时数据导出到外部格式的本地功能 |
建立了参数化支持 | 参数化可以通过编程完成,但是很难实现。 |
自动生成测试报告 | 没有本地支持生成测试/bug报告。 |
虽然QTP具有较高级的功能,但Selenium在以下三个主要方面胜过QTP:
- 成本(因为Selenium完全免费)
- 灵活性(由于可以支持多种编程语言,浏览器和平台)
- 并行测试(QTP能够但只能使用质量中心)
总结
整个Selenium工具套件由四个组件组成:
- Selenium IDE : 它是一个Firefox插件,只能用于创建比较简单的测试用例和测试套件。
- Selenium RC,也称为Selenium 1,它是第一个允许用户在创建复杂测试中使用编程语言的Selenium工具。
- WebDriver,这是一个新的突破,允许测试脚本直接与浏览器通信,从而从操作系统级别进行控制。
- Selenium Grid也是与Selenium RC一起使用的工具,用于在不同浏览器和操作系统之间执行并行测试。
Selenium RC和WebDriver合并形成Selenium2。在成本和灵活性方面,Selenium比QTP更有优势。 它也允许并行运行测试,不像在QTP中,只能顺序运行测试。