本文供学习交流之用,没有商业用途,没有盈利。

完全是我自己为督促自己学习而翻译的。翻译的不好,见谅。来源于:http://www.guru99.com/introduction-to-selenium.html

什么是Selenium?

Selenium是一款开源的,面向web应用,支持多浏览器和平台的自动化测试套件(suite)。跟HP QTP很像,只是Selenium更专注于自动化网络应用程序的测试。

Selenium不仅仅是个单一的工具,而是一系列的软件集成,每个部分针对不同的测试需要。一共有四个组件。

  • Selenium集成开发环境 IDE
  • Selenium远程控制 remote control
  • web  驱动器 driver
  • Selenium 网格 grid

如图,后来两部分合在一起了,叫selenium2。如果提到selenium1, 就是指Selenium RC.

谁开发了Selenium?

一堆人,有几个关键人物,上图一个,2004年,这个人,需要做重复性repetitious测试,跟我现在一样。他意识到重复性的手动测试效率太低,他写了一个JavaScript程序,可以自动控制浏览器的行为。他起的名字是"JavaScriptTestRunner."

这个名字的潜在含义就是帮助自动化测试网络应用。后来这个开源了,改名字为Selenium Core。

同源策略问题

同源策略的精髓很简单:它认为自任何站点装载的信赖内容是不安全的。当被浏览器半信半疑的脚本运行在沙箱时,它们应该只被允许访问来自同一站点的资源,而不是那些来自其它站点可能怀有恶意的资源。

这个问题阻止了通过JavaScript 代码访问来自其他域的元素。比如说,google网站里用了一个JS的程序,"randomScript.js"。同源策略只允许在"randomScript.js"里面访问google.com/mail, google.com/login, or google.com/signup 诸如这些页面。然而,从雅虎网等其他站点是访问不了google这些页面,因为他们属于不同的域。这地方,我理解的不好,上图为证。

因此,在Selenium RC没有出现之前,测试者需要安装本地的备份(既要有Selenium Core (a JavaScript program),也要有装载了web应用的web服务器),这样他们属于相同的域domain,就可以互相访问元素了。

Selenium Remote Control (Selenium RC)的出现

Paul Hammant 这个人觉得安那么多麻烦,所以他创建了一种服务器,这个服务器以代理的形式去欺骗服务器,可以让浏览器以为Selenium Core和web应用是同源的。这个系统也就是Selenium1.

Selenium Grid的出现

Patrick Lightbody这个人后来为了优化执行时间,研究出了Selenium Grid。起初叫Hosted QA。在整个流程的关键步骤,浏览器可以截图为证,并且实现了并发地向不同机器发送Selenium指令。

Selenium IDE的出现

星野笠谷(Shinya Kasatani )开发了个firefox的插件,也就是IDE, 可以使浏览器实现 “记录再回放”的功能。有了这个,写Case就快了。2006年,他给这个IDE贡献给了Selenium 项目组。

WebDriver的出现

Simon Stewart大概在2006年开发了WebDriver。当时,浏览器和web应用越来越有受欢迎,when browsers and web applications were becoming more powerful and more restrictive with JavaScript programs like Selenium ,更加JS程序使用更加受限?这句实在不懂。这个WebDriver第一次实现了跨平台的测试框架,可以从操作系统的层面上OS级来控制浏览器了。

Selenium 2的出现

在2008年,整个Selenium 项目组决定把RC 和WebDriver整合成一个更强大的工具,叫Selenium2, WebDriver作为它的核心。 目前,Selenium RC尚处于维护模式。Selenium 2现在是整个项目的重点。

为什么叫Selenium?

它来源于Jason讲的一个笑话。在Selenium开发的阶段,另外一个测试框架叫 Mercury Interactive 水星?不,水银交互?这个框架是最初提出QTP的公司研发的。 因为硒可以解水银的毒,所以Jason起了这样一个名字。

Selenium IDE的简单介绍

这个东西是里面最简单最好学的框架。可以很轻松地安装在火狐浏览器上。但由于它的简单,IDE仅仅是用来分析原型的工具a prototyping tool。如果想创建更复杂的case,还是需要用RC或者webDriver的。

优点:

  1. 安装简单,用着也简单
  2. 无需编程经验,知道点儿html和DOM知识就行了
  3. 可以导出RC和webDriver直接用的格式的case
  4. 有嵌入式的(built-in)帮助和测试结果记录模块
  5. 提供插件支持

缺点:

  1. 只在Firefox里面可用
  2. 只能创建原始类型的测试
  3. 不支持迭代和条件判断操作
  4. 测试执行起来比RC和WebDriver慢

虽然我写的也很烦,不过还是继续吧!坚持!

Selenium Remote Control (Selenium RC)的简介

有很长一段时间,Selenum RC是整个测试框架的重点(flagship)。这是第一个允许用户选择自己喜欢的编程语言的测试web app的工具。截至到v 2.25.0, RC已经支持了 Java,C#,PHP,Python,Perl,Ruby。

优点:

  1. 兼容多浏览器,多平台
  2. 支持循环和条件判断了
  3. 支持data-driven (数据驱动)测试
  4. API已经成熟
  5. 逐渐支持新的浏览器
  6. 比IDE执行更快

缺点:

  1. 安装比IDE更复杂些
  2. 需要有编程基础
  3. 需要把RC server同时运行起来
  4. API包括了多余的,复杂的命令
  5. 浏览器交互缺乏真实性
  6. 可能产生不一致的结果
  7. 执行速度没有WebDriver快

还是上图,免得今后误导自己。

WebDriver的简介

WebDriver在很多方面优于RC和IDE。它实现了一个更流行的,更稳定的途径去自动化浏览器的操作。WebDriver不像RC,并不依赖JavaScript。通过直接同浏览器通信来控制浏览器。

语言支持的话跟RC一样。

明天写。。。。果然,我们继续吧~09.22.2015

优点:

  1. 比Selenium RC更简单的安装方式
  2. 与浏览器直接通信
  3. 更真实的浏览器交互
  4. 不需要RC Server这样的其他组件
  5. 比IDE和RC执行起来更快

缺点:

  1. 安装比IDE更复杂些
  2. 需要有编程基础
  3. 并不能逐渐支持新浏览器
  4. 没有内置的机制去记录运行时的消息,也不生成测试结果

上图免误导

Selenium Grid

Grid跟RC一起工作,可以同时在不同的机器,不同的浏览器平行完成测试。平行执行的意思是一次执行多个测试。

特点:

  • 同时在多浏览器多环境下执行测试
  • 节省大量时间
  • 利用了 hub-and-nodes的概念。核心是Selenium命令,其他节点连接到这个中心上去。好像集线器的概念?

浏览器和环境支持

因为不同组件的架构存在差异,Selenium IDE, Selenium RC,和 WebDriver支持不同的浏览器和操作系统。

下表复制,原创不要生气!

Selenium IDE

Selenium RC

WebDriver

Browser

Support

Mozilla Firefox

Mozilla Firefox

Internet Explorer

Google Chrome

Safari

Opera

Konqueror

Others

Internet Explorer versions 6 to 9, both 32 and 64-bit

Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7 and above

(current version is 16.0.1)

Google Chrome 12.0.712.0 and above

(current version is 22.0.1229.94 m)

Opera 11.5 and above

(current version is 12.02)

Android - 2.3 and above for phones and tablets

(devices & emulators)

iOS 3+ for phones (devices & emulators) and 3.2+ for tablets (devices & emulators)

HtmlUnit 2.9 and above

(current version is 2.10)

Operating System

Windows

Mac OS X

Linux

Windows

Mac OS X

Linux

Solaris

All operating systems where the browsers above can run.

如何按需要选择正确的Selenium工具呢?

工具

为什么选?

Selenium IDE

    • 了解自动化测试概念以及Selenium,包括:
      • 像type, open, clickAndWait, assert, verify等一些指令。
      • 像id,name,xpath,css selector等一些定位元素的方法
      • 用runScript执行定制好的JS代码
      • 以不同格式导出测试用例
    • 在不太了解编程知识的情况下创建测试。
    • 创建简单的测试用例和测试集合,以便导出后在RC或者WebDriver中使用。
    • 只能用于在FIREFOX中进行测试的web应用。

Selenium RC

    • 用比Selenese指令更加便于理解的语言来设计一个测试
    • 在不同浏览器(除了HtmlUnit)上,不同操作系统上运行测试用例。
    • 用Selenium Grid在多个环境下部署测试。
    • JavaScript.在一个支持JavaScript的新浏览器上测试应用。
    • 基于阿贾克斯的测试用例

WebDriver

    • 用一款明确的编程语言来设计测试用例
    • 你的web应用里有很多基于Ajax的功能待测。
    • 在HtmlUnit浏览器上完成测试
    • 创建更多定制的测试用例

Selenium Grid

    • 在多个浏览器,多个操作系统上同时运行您的Selenium RC脚本
    • 最快速度运行一个大型的测试用例集合

比较一下Selenium和QTP

Quick Test Professional(QTP)是一款专利 proprietary化的自动化测试工具。 QTP以前是Mercury Interactive 公司所有的,后来在2006年,被Hewlett-Packard(HP)惠普买下来了。Selenium工具套件较QTP有很多优点。

Selenium QTP好的地方

Selenium

QTP

开源,免费用

商业化的,要钱

扩展性强

有限的插件

可以在不同的浏览器上运行测试

只能在火狐,IE,和chrome

支持各种操作系统

只能在Windows下使用

支持移动端测试

利用第三方软件支持移动端测试

在浏览器最小化的时候仍然可以运行测试

应用必须在桌面可见才能执行测试

可以并行进行测试

利用另一款收费软件Quality Center来完成并行测试

QTP比Selenium好的地方

QTP

Selenium

Web应用和桌面应用都可以测

只能用来测试Web应用

有内置的对象库

没有内置的对象库

写自动化更快,因为有完整的集成开发环境。

写自动化比较慢,因为没有原始的IDE用,只能用第三方的IDE来开发

由于有内置的全局和本地的数据表,更容易实现数据驱动测试。

Data-driven数据驱动测试比较复杂,因为必须依赖编程语言的特性为测试数据赋值。

cumbersome 【'kʌmbə(r)s(ə)m】

可以直接控制浏览器(收藏夹栏,地址栏,前进和后退按钮等)

不能测试web应用的过程中控制浏览器的组件

提供专业的客户支持。

没有官方的用户支持。

本身就有多种外部导出测试数据的格式。

没有自带的导出运行时数据到外部格式的功能。

有内置的参数化支持。

可以编程实现参数化,但是很难。

自动生成测试报告。

没有自带的测试结果报告生成。

很明显,QTP有更强大的功能,Selenium在以下三个方面比QTP好。

  • 花费便宜
  • 灵活性强 可以用多种编程语言,支持多浏览器多操作平台
  • 并行测试比QTP方便

总结

整个的Selenium工具套件由四部分组成:

Selenium IDE,只能用一个火狐插件来创建一些相对简单的测试用例和测试组合

Selenium Remote Control,也就是Selenium 1,第一个让用户用编程语言来创建复杂的测试的selenium工具。

WebDriver,全新的突破,让你的测试脚本直接与浏览器交互,而且从OS层级来控制测试。

Selenium Grid,也是一个利用Selenium RC在不同系统和浏览器上平行执行测试的工具。

Selenium Remote Control+WebDriver合并成了Selenium 2.

Selenium在花费和灵活性上优于QTP。Selenium可以实现并行执行测试,而QTP只能依次执行测试。

大功告成!万里长征第一步!总算翻译完了。今天老公去腾讯校招二面,但是被淘汰了。我心情很不好。因为自己太懒,本来想找个人依靠,不用那么拼了。现在发现行不通了,只能靠自己了!我自己怀着功利的心,这本来就是不对的。不就是钱吗?自己挣不行吗?我好坏!我是拜金主义者,很懒的拜金主义者。在男朋友身上,看不到想要的未来了。但是,也不能因为这个就离开这个人呀!想到一个场景,我在洛杉矶机场,下飞机。想想就会泪流满面。什么时候才会到达梦想呢?如果这辈子不能达成梦想,那也是自己活该。脑袋笨归脑袋笨,但是出不了国,不是脑袋笨的原因。该怎么安慰自己呢?生命本是就是美丽的。前四分之一的,一事无成的人生,自己能说些什么呢?再想象一个场景,40岁的自己,又老又胖,在家看电视,在一个蜗牛壳子里,家里脏乎乎的。我会相信,那就是我的一生了吗?不曾去过梦想的地方,死之前都没有办法原谅自己。莫斯科不相信眼泪,哭是解决不了任何问题的。我知道,对不起,我又哭了。

不,我要去,我要去美国,吃好吃的!我要在自由女神像前激动得落泪!而不是在家里遗憾地哭瞎眼睛。戒掉三国杀,戒掉伪装者!努力学习!

【Selenium】1.介绍 Selenium的更多相关文章

  1. 【Selenium】3.介绍Selenium IDE

    本文供学习交流之用,没有商业用途,没有盈利. 完全是我自己为督促自己学习而翻译的.翻译的不好,见谅.来源于:http://www.guru99.com/introduction-selenuim-id ...

  2. 自动化测试-Selenium家谱介绍

    一.自动化测试定义 自动化测试是通工具录制或编写脚本的方式模拟手工测试的过程,通过回放或运行脚本来执行测试用例,从而代替人工对系统的功能进行验证. 二.什么样的项目适合做自动化测试 1.需求明确,不会 ...

  3. python selenium自动化测试之路(1)--分层测试概念、selenium工具介绍

    1.分层自动化测试概念 传统的自动化市场更关注产品UI层的自动化测试,而分层的自动化测试倡导产品开发的不同阶段都需要自动化测试 大多公司与研发团队其实是忽略了单元测试与集成测试阶段的自动化测试工作,所 ...

  4. Selenium 工具介绍、安装、配置及使用

    概念 selenium是一款跨平台开源工具,用于web的功能完整性測试,想做压力測试的能够换软件了 先看一眼官方站 http://docs.seleniumhq.org/download/ 首先要FQ ...

  5. Selenium API 介绍

    Selenium API 介绍 我们先前学习过元素定位,大家不知道学习得怎么样了,当你学会元素定位之后就能够跟着我的脚步学习本节Selenium 经常使用的API 介绍 Seleium 为什么能模拟人 ...

  6. python基础 — Selenium 详细介绍

    一.Selenium+Python环境搭建及配置 1.1 selenium 介绍 selenium 是一个 web 的自动化测试工具,不少学习功能自动化的同学开始首选 selenium ,因为它相比 ...

  7. 详解介绍Selenium常用API的使用--Java语言(完整版)

    参考:http://www.testclass.net/selenium_java/ 一共分为二十个部分:环境安装之Java.环境安装之IntelliJ IDEA.环境安装之selenium.sele ...

  8. Selenium IDE和Selenium RC的安装

    1       安装FireBug和FirePath 1.在火狐浏览器中,点击”添加附件”按钮,弹出”附加组件管理器”页面 2.在弹出页面中,输入“fireBug”,点击“搜索”按钮,弹出fireBu ...

  9. Selenium UI自动化测试 Selenium Automatic Testing

    https://www.cnblogs.com/sunada2005/archive/2013/12/22/3486314.html UI Automatic Testing 1. 什么样的项目适合自 ...

随机推荐

  1. 【JAVA】JAVA 反射

    在Java反射机制中,需要掌握的知识有:         (1)掌握反射机制的概述.         (2)能够使用Class类并结合java.lang.reflect包取得一个类的完整结构.     ...

  2. BZOJ4154: [Ipsc2015]Generating Synergy

    Description 给定一棵以1为根的有根树,初始所有节点颜色为1,每次将距离节点a不超过l的a的子节点染成c,或询问点a的颜色   Input 第一行一个数T,表示数据组数 接下来每组数据的第一 ...

  3. Hive_DDL与DML

    DDL(数据定义语言) create.drop.alter.truncate.show.describe DML(数据控制语言) load.insert.update.delete.import/ex ...

  4. 设置Oracle时间格式

    ORACLE的DATE类型的显示方式取决于NLS_DATE_FORMAT初始化参数NLS_DATE_FORMAT参数可以在以下几个级别设置1.数据库级别——如果希望所有人都看到某种格式的数据,则在SQ ...

  5. bootstrap input框清空

    <!DOCTYPE HTML> <html> <head> <link href="http://netdna.bootstrapcdn.com/t ...

  6. 搭建vpn

    之前买的vpn,对linux支持很不友好,家里装的又是ubuntu.突然一想自己买个vps搭个vpn. 先买了host1plus的vps,一个月30块,配了两天,pptp,l2tp,shadow so ...

  7. bootstrap 不兼容ie8 的问题

    官方推荐的脚手架中,其实已经包含着解决方案:html5shiv.min.js .Respond.min.js 但由于respond.js  使用 file:// 协议,IE8 是无法调起本地文件的   ...

  8. JavaScript入门篇 编程练习

    编程挑战 一.定义"改变颜色"的函数 提示: obj.style.color obj.style.backgroundColor 二.定义"改变宽高"的函数 提 ...

  9. IOS第18天(6,CAKeyframeAnimation关键帧动画)

    ******* #import "HMViewController.h" @interface HMViewController () @property (weak, nonat ...

  10. 2014年国人开发的最热门的开源软件TOP 100

    不知道从什么时候开始,很多一说起国产好像就非常愤慨,其实大可不必.做开源中国六年有余,这六年时间国内的开源蓬勃发展,从一开始的使用到贡献,到推出自己很多的开源软件,而且还有很多软件被国外的认可.中国是 ...