【Selenium】1.介绍 Selenium

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

完全是我自己为督促自己学习而翻译的。翻译的不好,见谅。来源于: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岁的自己,又老又胖,在家看电视,在一个蜗牛壳子里,家里脏乎乎的。我会相信,那就是我的一生了吗?不曾去过梦想的地方,死之前都没有办法原谅自己。莫斯科不相信眼泪,哭是解决不了任何问题的。我知道,对不起,我又哭了。

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

原文地址:https://www.cnblogs.com/jin-wen-xin/p/4826801.html