Selenium功能自动化技术
作者:张会美
邮箱:[email protected]
更改历史
* 2017-11-12 张会美 初始化文档
1 历史、现状和发展
Jason Huggins在2004年发起了Selenium项目,当时身处ThoughtWorks的他,为了不想让自己的时间浪费在无聊的重复性工作中,幸运的是,所有被测试的浏览器都支持Javascript。Jason和他所在的团队采用Javascript编写一种测试工具来验证浏览器页面的行为;这个JavaScript类库就是Selenium core,同时也是seleniumRC、Selenium IDE的核心组件。Selenium由此诞生。
关于Selenium的命名比较有意思,当时QTP mercury是主流的商业自化工具,是化学元素汞(俗称水银),而Selenium是开源自动化工具,是化学元素硒,硒可以对抗汞。
Selenium IDE
Selenium IDE是嵌入到Firefox浏览器中的一个插件,实现简单的浏览器操作的录制与回放功能。
Selenium Grid
Selenium Grid是一种自动化的测试辅助工具,Grid通过利用现有的计算机基础设施,能加快Web-App的功能测试。利用Grid可以很方便地实现在多台机器上和异构环境中运行测试用例。
Selenium RC
Selenium RC(Remote Control)是Selenium家族的核心部分。Selenium RC 支持多种不同语言编写的自动化测试脚本,通过Selenium RC的服务器作为代理服务器去访问应用,从而达到测试的目的。
Selenium RC分为Client Libraries和Selenium Server。Client Libraries库主要用于编写测试脚本,用来控制Selenium Server的库。Selenium Server负责控制浏览器行为。 在2006年的时候,Google的工程师Simon Stewart发起了WebDriver的项目;因为长期以来Google一直是Selenium的重度用户,但却被限制在有限的操作范围内。
Selenium RC 是在浏览器中运行JavaScript应用,使用浏览器内置的JavaScript翻译器来翻译和执行selenese命令(selenese是Selenium命令集合)。
WebDriver是通过原生浏览器支持或者浏览器扩展来直接控制浏览器。WebDriver针对各个浏览器而开发,取代了嵌入到被测Web应用中的JavaScript,与浏览器紧密集成,因此支持创建更高级的测试,避免了JavaScript安全模型导致的限制。除了来自浏览器厂商的支持之外,WebDriver还利用操作系统级的调用,模拟用户输入。
因为Selenium和Webdriver的合并,所以,Selenium 2.0由此诞生。简单用公式表示为:
Selenium 2.0 = Selenium 1.0 + WebDriver
需要强调的是,在Selenium 2.0中主推的是WebDriver,可以将其看作Selenium RC的替代品。因为Selenium为了保持向下的兼容性,所以在Selenium 2.0中并没有彻底地抛弃Selenium RC。
它的工作原理是这样的:
Selenium 3.0做了一些不大不小的更新:
1、终于去掉了RC,简单用公式表示为:
Selenium 3.0 = Selenium 2.0 + Selenium RC(Remote Control)
2、Selenium3.0只支持Java8版本以上。
3、Selenium3.0中的Firefox浏览器驱动独立了,以前装完selenium2就可以驱动Firefox浏览器了,现在和Chrome一样,必须下载和设置浏览器驱动。
难点:预测发展方向。
2 安装和使用
2.1 安装
在安装Selenium 之前我们应该根据具体情况选择什么版本,以及工具集的选择,目前Selenium工具集包括:Selenium Core、Selenimu IDE、Selenium Remote Control(selenium RC)、Selenium Grid。
step1:下载安装FireFox浏览器。
step2:打开FireFox浏览器,按“工具-附件组件-获取添加组件”菜单顺序找到插件安装页面,在搜索栏输入“selenium ide”进行搜索,选择一个版本进行安装(即:选择“添加至FireFox”操作。
2.2 使用
Selenium IDE是Firefox的一个插件,是可以进行脚本录制以及案例转换,所以Selenium IDE+Firebug会成为你日后写测试案例的两大助手(IE下可以使用Selenium Core+IEDevelperToolBar)。 由Command,Target,Value组成的表格就是脚本,每个脚本都是由一条一条的Action(行为)组成,而每个Action又由(Command,Target,Value)三者组成
脚本的录制及运行
当弹出IDE窗口后,我们就可以开始Selenium的脚本录制了,右上角有个红色的圆点,当它下按红色按钮会出现灰色的边框,就表示IDE正在进行脚本录制。开始录制,录制的时候,直接操作Firefox浏览器窗口就可以了,IDE会自动记录你的操作,录制完成后点击红色按钮,停止录制。 1.指的是你当前录制时的开始连接地址。
2.这里就是你的测试用例,刚开始录制好之后都是没有命名的。
3.脚本命令内容,command:方法关键字;Target:元素定位;Value:参数。
4.新建和修改脚本的地方。
5.日志输出。
6.右上角的红色圆,空心的时候表示的正在录制,实心表示录制结束。
2.3 示例
2.4 最佳实践
难点:最佳实践,超出于示例,应该归纳总结出积累的技巧。
3 同类技术对比
selenium与QTP对比
selenium优势:
1.支持多种平台,多种浏览器,多种编程语言
2.开源免费
3.代码小巧,简介,灵活
4,更容易和其他测试框架整合
selenium劣势:
1.没有QTP功能强大,不支持客户端类应用
2,QTP更容易入门,selenium学习成本比较高
3,没有基本化界面
QTP优势:
1.QTP是一个侧重于功能的回归自动化测试工具;提供了很多插件
2.QTP支持的脚本语言是VBS
3.拥有Object Spy,可以用来查看Run-time object和Test object属性和方法
4.Action是QTP组织测试用例的具体形式,拥有自己的DataTable和Object Repository,支持Input和output参数
QTP劣势:
1.QTP对系统的环境要求很高
2.QTP支持windows,没有selenium支持的浏览器多
难点:归纳比对项