Selenium简介(一)--总体介绍

来源:互联网 发布:防火知多少教案反思 编辑:程序博客网 时间:2024/05/16 04:52

作者:洪流

 

Selenium被越来越多的公司采用作为Web自动化测试的轻量级框架,但是系统的介绍Selenium的中文文档却几乎没有,因此,为了方便大家更好的使用Selenium,特别编写Selenium文档系列,主要包括:
一、 总体介绍
二、 基于CORE/IDE的简单应用
三、 基于RC的简单应用
四、 Selenium Core模式自动化实施方案
五、 Selenium 常见问题解决


Selenium完全解读(一)

-- 总体介绍

阅读建议:本部分主要介绍Selenium的框架、模式以及原理,如果你只想做一个Selenium的应用者,本文简单阅读既可,可重点关注后续。如果你想更加深入,以及对Selenium进行扩展的话,请详细阅读此文。

    简介
Selenium是ThoughtWorks员工在业余时间开发并维护的开源项目,并且在ThoughtWorks的项目中被广泛应用。简单地说,Selenium是一个自动化的web应用功能测试工具。
我们稍微八卦一下,Selenium有趣的是它名字的来历:在Selenium出现之前,当时最著名的web应用功能测试工具Mercury Quanlity Center,但那是一个商业工具,功能强大却也价格不菲,常常让开发者们又爱又恨。所以,自己动手开发开源功能测试工具的ThoughtWorker们把这个工具叫做Selenium——“mercury”有“水银”的意思,而“selenium”(硒元素)恰好是专解汞中毒的特效药。
八卦到此,转入正题,Selenium的主要特点是其开源性、跨平台性以及众多的编程语言支持,你可以用html编写测试用例,也可以用python、java、php甚至Linux shell来编写测试用例。如此多的特性,使Selenium最近几年成为越来越多QA的Web应用功能测试的首选自动化测试工具。在接入具体的应用前,我们先来了解下Selenium的框架与原理:
Selenium分为Core与RC(Remote Control)两个部分,其中Core是基础的,直接在HTML Table里编写测试代码的模块,而Remote Control则支持用Java等语言编写测试用例。最近,Selenium又推出了新的Remote Grid, 支持多任务并发,可以看成是多个RC的集合。同时,Selenium也提供了一个脚本录制器Selenium-IDE,该录制器是一个基于Firefox的插件。而无论Core模式,还是RC模式,其最终都是通过Java Script来实现对页面元素的控制,它提供了丰富的指定Html页面元素和操作页面元素的方法。
其框架如下图:
 Selenium框架

 

Selenium Core/Selenium IDE

Selenium Core是Selenium的核心部分,它由一些纯js代码组成, 可以运行在windows/linux的不同browser上, 而IDE是在core的基础上的一种应用, 通过UI实现类似QTP/Winner的脚本录制回放功能。

一、Core的运行模式主要有:

 

1. Selenium IDE 运行
利用IDE插件加载core引擎,运行测试脚本。主要用于脚本录制调试,类似于开发工具的调试,一般不应用于测试。
2. 部署于被测对象服务器上,以http方式运行
将core核心引擎和测试代码部署与被测对象的Web服务器上,以http请求的方式运行。
3. 本地模式HTA and Chrome
HTA模式是在IE下运行,Chrome是在Firefox下运行。这个两个的原理都是利用浏览器的本地化模式,调用主html文件--Test Runner 加载核心引擎库,执行test suite里的测试用例。

二、Selenium Core的一些核心js引擎文件:

selenium-api.js :Selenium的主API库
selenium-browserbot.js : Selenium的主函数库,命令的具体方法都在该库中。
selenium-browserdetect.js : 浏览器版本检测库
selenium-logging.js : 记录日志库
user-extensions.js : 用来扩展selenium的文件;用户自己编写的函数和扩展的命令都应该放在这个文件中。当然,你也可以放在其他地方。
xmlextras.js : 第三方JavaScript库。主要用于DHTML及XML的解析。

三、Selenium IDE说明:

  Selenium IDE是通过监听用户对html页面的操作来录制脚本的,是真正能够监听用户对html页面的操作的录制工具。 Selenium IDE可以生成7种语言的脚本:html,java,C#,ruby,python,perl,php。
  你可以直接在FireFox中将Selenium IDE打开,执行html格式的脚本。 
  如果你要执行其他语言格式的Selenium脚本,那么,你需要使用Selenium服务器,使用RC模式。6种语言的使用方法都是一样的。

Selenium RC

Selenium RC模式,是客户端利用各种编程语言,通过网络向Selenium Server发送指令,Selenium Server接收到测试指令后,启动浏览器并向其发出JavaScript调用实现对Html页面的全面追踪,并通过网络把执行结果返回给调用者。
Selenium Server的实现原理是其打开浏览器时,把自己的JavaScript文件嵌入网页中。然后Selenium的网页通过frame嵌入目标网页。这样,就可以使用Selenium的JavaScript对象来控制目标网页。
Selenium客户端一般使用单元测试技术实现,通过判断返回的结果与预期是否一致来决定程序是否运行正确。
如下图:
 RC

 

Selenium Grid

Selenium Grid是在Selenium RC的基础上,为了解决RC模式不能并发调用的问题而推出的一种解决方案。可以实现多环境,同时测试的需求。其具体原理如下:
客户端利用各种编程语言,并发的方式,通过网络向Selenium Grid发送指令,Selenium Grid接收到测试指令后,根据不同的并发指令,启动对应多个的Selenium Server。然后Grid把指令发送给对应Server,每个Server的处理原理与RC相同。
由上面原理,可以看出,Grid 只是提供运行脚本的环境,无法决定脚本以什么样的形式去跑(并行的方式,或者多环境的方式)。脚本以什么样的形式跑,由脚本本身和脚本的runner (一般用junit或者TestNG)的配置所决定.
Selenium Grid、Selenium RC、Selenium Core/IDE之间的区别如下图:
 grid


几个概念 

操作(action)和断言(assertion) 
操作(action):操作模拟用户与Web应用程序的交互。例如,单击一个按钮和填写一个表单,这些都是常见的用户操作,可以用Selenium命令来自动化这些操作。
断言(assertion):断言验证一个命令的预期结果。常见的断言包括验证页面内容或当前位置是否正确。在Selenium网站上可以找到可用命令的完整列表。通过Selenium命令,脚本编写者可以描述browser bot在浏览器中所执行的操作
Test Suite和Test Case:
Test Suite: 一组测试的集合,在实际中往往一个模块对应一个Test Suite,在Seleium中显示在左上角。
Test Case:一个测试用例,包含多个action 或者断言。