zoukankan      html  css  js  c++  java
  • 【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岁的自己,又老又胖,在家看电视,在一个蜗牛壳子里,家里脏乎乎的。我会相信,那就是我的一生了吗?不曾去过梦想的地方,死之前都没有办法原谅自己。莫斯科不相信眼泪,哭是解决不了任何问题的。我知道,对不起,我又哭了。

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

  • 相关阅读:
    关于第一次作业表达式求导总结
    北航OO第一单元总结
    OO课程总结
    OO第三次博客
    OO第二次博客
    OO第一次博客
    OO第一单元总结——多项式求导
    [面向对象]电梯作业优化相关
    面向对象的程序设计-模块一课程总结
    OO第二单元总结——电梯
  • 原文地址:https://www.cnblogs.com/jin-wen-xin/p/4826801.html
Copyright © 2011-2022 走看看