Selenium家族简介及学前须知

来源:互联网 发布:多进程服务器tcp编程 编辑:程序博客网 时间:2024/05/26 19:15

   项目实际需要,开始学习Selenium。 

   selenium 也不是简单一个工具,而是由几个工具组成,每个工具都有其特点和应用场景。其框架如下图:

   

   Selenium是基于WEB应用的验收测试工具集合,直接运行在浏览器中,通过一系列命令来模拟用户操作,Selenium可以将这些命令转化成实际的HTTP请求在浏览器中运行 :

(1)Selenium Core:支持DHTML的测试案例(效果类似数据驱动测试),它是Selenium IDE和Selenium RC的引擎。 
(2)Selenium IDE:FireFox的一个插件,支持脚本录制、调试和用例生成。 
(3)Selenium RC:Selenium Remote Control。
selenium RC 是selenium 家族的核心工具,selenium RC 支持多种不同的语言编写自动化测试脚本,通过selenium RC 的服务器作为代理服务器去访问应用从而达到测试的目的。selenium RC 使用分Client Libraries和selenium Server,Client Libraries库主要主要用于编写测试脚本,用来控制selenium Server的库。Selenium Server负责控制浏览器行为,总的来说,Selenium Server主要包括3个部分:Launcher、Http Proxy、Core。其中Selenium Core是被Selenium Server嵌入到浏览器页面中的。其实Selenium Core就是一堆JS函数的集合,就是通过这些JS函数,我们才可以实现用程序对浏览器进行操作。Launcher用于启动浏览器,把selnium Core加载到浏览器页面当中,并把浏览器的代理设置为Selenium Server 的Http Proxy。

(4)Selenium Grid:允许同时并行地、在不同的环境上运行多个测试任务,极大地加快Web应用的功能测试。Selenium Grid是一种自动化的测试辅助工具,Grid通过利用现有的计算机基础设施,能加快Web-app的功能测试。利用Grid,可以很方便地同时在多台机器上和异构环境中并行运行多个测试事例。其特点为:a. 并行执行;b· 通过一个主机统一控制用例在不同环境、不同浏览器下运行。c· 灵活添加变动测试机。
 (5)Selenium WebDriver:selenium2.x,selenium1集成了webDriver的API实现 

   而Selenium Core和RC就是我们俗称的Selnium1,而与webDriver集成了的Selenium就是我们俗称的Selenium2,也叫Selenium WebDriver。 那为什么要用Selnium2呢,因为 

1、selenium2更加原生态,支持控件更多 
2、 selenium2比selenium1.0更简单易学,有利于维护的API 

3、selenium1.0必须操作真实浏览器,但是WebDriver可以HTML unit Driver来模拟浏览器,在内存中执行用例,更加的轻便 。

      搞清了selenium 1.0 的家族关系,selenium 2.0 是把WebDriver 加入到了这个家族中;简单用公式表示为:

  selenium 2.0 = selenium 1.0 + WebDriver 

  需要强调的是,在selenium 2.0 中主推的是WebDriver ,WebDriver 是selenium RC 的替代品,因为 selenium 为了向下兼容性,所以selenium RC 并没有彻底抛弃,如果你使用selenium开发一个新自动化测试项目,强列推荐使用WebDriver 。那么selenium RC 与webdriver 主要有什么区别呢?

  selenium RC 在浏览器中运行JavaScript应用,使用浏览器内置的JavaScript 翻译器来翻译和执行selenese命令(selenese 是selenium命令集合)。

  WebDriver通过原生浏览器支持或者浏览器扩展直接控制浏览器。WebDriver针对各个浏览器而开发,取代了嵌入到被测Web应用中的JavaScript。与浏览器的紧密集成支持创建更高级的测试,避免了JavaScript安全模型导致的限制。除了来自浏览器厂商的支持,WebDriver还利用操作系统级的调用模拟用户输入。

  如果是新项目直接学习webdriver 就OK了,RC是过时技术。

Selenium学习路线:

需要熟悉webdriver API ,API就是selenium 所定义一方法,用于定位,操作页面上的各种元素。

  先学习元素的定位,selenium 提供了id、name、class name、 tag name、link text、partial link text、 xpath、css、等定位方法。xpathcss 功能强大语法稍微复杂,在这其间你可能还需要了解更多的前端知识。xml ,javascript 等。

  定位元素的目的是为了操作元素,接就要学习各种元素有操作,输入框,下拉框,按钮点击,文件上传、下载,分页,对话框,警告框...等等。

  经过一段时间的学习,你可以游刃有余的模拟手工测试来操作页面上的各种元素了。接着你需要做的就是把这些“用例”组织起来,统一来跑。

  那么你需要做的就是学习并使用单元测试框架,单元测试框架本身就解决了用例的组织与运行。

  当你写了一些“测试用例” 之后,你会发现用例中有大量重复的操作,能不能写到一个单独的文件中,需要的时候调用这些操作?当然可以,运用你的编程能力来实现这一点将非常简单。然后,你又发现每个用例中都有一些数据,这些数据也是一样的,但如果变化了修改起来非常麻烦,你也可以把他写到一个单独的文件中进行读取。

  接着你又遇到了新的疑问,我写的脚本(用例)都是流水式的,我怎么知道用例运行失败还是成功。那么就需要在脚本中加一些验证与断言。

  接着你又有了更多的想法,单元测试框架的log太简陋了,能不能生成一张漂亮的测试报告出来。我能不能定时的来跑这个脚本。能不能把每一次跑脚本的测试结果直接发到我的邮箱。能不能......

  为解决这些问题,你不得不学习更多的编程技术,然后你的“测试结构”会功能越来越强大,越来越灵活。产生了一定的通用性和移植性。一个有模有样的自动化测试框架诞生了。

   假如,有一天你不再做UI的自动化测试了,你会发现你去做单元测试 或接口测试基本没什么难度。开发个测试工具之类的也不在话下,感谢selenium 吧!顺便也感谢一下我吧!






参考文章:http://www.cnblogs.com/fnng/p/3653793.html


0 0