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

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

  • 相关阅读:
    【Azure Redis 缓存】Azure Redis 功能性讨论二
    【Azure Developer】如何用Microsoft Graph API管理AAD Application里面的Permissions
    【Azure 环境】通过Python SDK收集所有订阅简略信息,例如订阅id 名称, 资源组及组内资源信息等,如何给Python应用赋予相应的权限才能获取到信息呢?
    【Azure 应用服务】App Service与APIM同时集成到同一个虚拟网络后,如何通过内网访问内部VNET的APIM呢?
    【Azure 云服务】如何从Azure Cloud Service中获取项目的部署文件
    【Azure Redis 缓存】Azure Redis 异常
    【Azure 微服务】基于已经存在的虚拟网络(VNET)及子网创建新的Service Fabric并且为所有节点配置自定义DNS服务
    【Azure Redis 缓存】遇见Azure Redis不能创建成功的问题:至少一个资源部署操作失败,因为 Microsoft.Cache 资源提供程序未注册。
    【Azure Redis 缓存】如何得知Azure Redis服务有更新行为?
    【Azure API 管理】在 Azure API 管理中使用 OAuth 2.0 授权和 Azure AD 保护 Web API 后端,在请求中携带Token访问后报401的错误
  • 原文地址:https://www.cnblogs.com/jin-wen-xin/p/4826801.html
Copyright © 2020-2023  润新知