用Selenium实现页面自动化测试

  引言

  要不要做页面测试自动化的争议由来已久,不做或少做的主要原因是其成本太高,其中一个成本就是自动化脚本的编写和维护,那么有没有办法降低这种成本呢?童战同学在其博文《界面自动化测试猜想》提到“将TC自动转化为自动测试脚本”的构想,大家都觉得这个还是很有难度的,那么我们退一步,“将功能测试执行的过程录制下来转化为自动化测试脚本”,这个难吗?或许不难,借用Selenium这个工具就可以实现。

  Selenium简介

  Selenium是ThoughtWorks公司开发的强大的web自动化测试工具。说它强大是因为:

  # 测试直接在浏览器中运行,就像真实用户所做的一样,从终端用户的角度测试应用程序。

  # 使浏览器兼容性测试自动化成为可能。

  # 使用简单,可生成多种语言的用例脚本。

  Selenium主要包含以下三个组件:

  # Selenium IDE:一个Firefox插件,可以录制用户的基本操作,生成测试用例。随后可以运行这些测试用例在浏览器里回放,可将测试用例转换为其他语言的自动化脚本。

  # Selenium Remote Control (RC) :支持多种平台(WindowsLinux,Solaris)和多种浏览器(IE,Firefox,Opera,Safari),可以用多种语言(Java,RubyPython,Perl,PHP,C#)编写测试用例。下面是其架构图:

  # Selenium Grid :Selenium RC的扩展,将测试用例部署到多台Server,并行运行以加快速度节省时间。

Selenium试用

  1. 安装Selenium IDE这个Firefox插件。安装后打开Firefox,从“工具”菜单选择“Selenium IDE”-打开Selenium IDE。如下图所示,红色的圆点控制脚本录制的开始和停止。

  2. 执行功能测试用例并录制脚本。

  我选择了一个比较简单的测试用例做为演示,该测试用例用于验证未通过实名认证的用户发布宝贝页面会出现实名认证提醒信息。主要步骤是:

  1) 打开淘宝首页

  2) 点击“我要卖”

  3) 点击“一口价”

  4) 出现登录页面,输入用户名和密码登录

  5) 验证出现的页面包含以下信息“您需要先通过实名认证”。

  在Firefox里执行上述步骤,前面4步的操作会被Selenium IDE忠实的记录下来,第5步验证怎么办?选中相应文字,点击鼠标右键,选择相应的命令,如下图所示(在Show All Available Commands里有更多的可用命令供选择):

  录制完毕后的脚步如下图示,如果需要的话可以在这里进行一些编辑,一个非常有用的功能是在Target里输入页面元素的xpath,点击Find按钮,Selenium IED会在真实页面上用绿色框标注该元素。

3. 在Selenium IDE里运行测试脚本

  运行可一次运行所有测试套件或单个用例,对用例的每个步骤也可单步执行,执行过程有详细的log记录,如下图所示:

  4. 测试用例转换为自动化脚本

  只在Selenium IDE里运行是远远不能满足需求的,我们需要为测试用例增加一些特性以使其能自动运行持续回归运行于不同的浏览器上,而Selenium IDE可以方便实现用例转换为自动化脚本,而且支持多种语言,如下图所示:

Java自动化代码示例(注意在setUp方法里指定了浏览器):

  Ruby自动化脚本示例:

  小结

  由于时间关系未对Selenium做深入研究,对其是否适用我们的web自动化测试不敢妄加断言,但通过简单试用觉得其有很多可取之处,希望熟悉web自动化测试的有志之士能结合当前现状,深入探索实践,若能借鉴此降低自动化脚本编写维护成本,善莫大焉!

初识Selenium(四)的更多相关文章

  1. 初识Selenium(二)

    ---------------------------------------------------------------------------------------------------- ...

  2. 初识Selenium以及Selenium常用工具的简单介绍

    一.为什么要学习自动化测试? 在互联网行业中敏捷开发小步快跑,快速迭代,测试环节中回归测试任务大繁琐,手工测试容易漏测,自动化测试可以提高测试效率保证产品质量. 二.学习的层次模型 1.单元自动化测试 ...

  3. 简要总结selenium四个工具组

    selenium 是基于WEB的自动化测试工具. 由以下几个工具组组成 1.selenium IDE: 一个火狐插件 点击这个插件就进入录制界面,能够记录用户的操作,并且将其导出为可重复使用的测试脚本 ...

  4. java selenium (四) 使用浏览器调试工具

    在基于UI元素的自动化测试中, 无论是桌面的UI自动化测试,还是Web的UI自动化测试.   首先我们需要查找和识别UI元素. 在基于Web UI 自动化测试中, 测试人员需要了解HTML, CSS和 ...

  5. 初识selenium

    今天尝试了一些selenium,感觉并没有想象中那么难.整理一篇笔记出来. 笔者使用的是Python+selenium.以下内容均是基于Windows系统和Python3.5.2. 首先是下载sele ...

  6. 初识Selenium(三)

    浅谈基于Selenium的Web自动化测试框架 发表于:2011-4-25 10:58  作者:邵育亮   来源:51Testing软件测试网原创 字体:大 中 小 | 上一篇 | 下一篇 | 打印 ...

  7. 初识Selenium(一)

    Selenium入门相关PPT参考网址:http://wenku.baidu.com/view/d1e7d90390c69ec3d5bb7565.html?from=search 内容引用网址:htt ...

  8. 吾八哥学Selenium(四):操作下拉框select标签的方法

    我们在做web页面自动化测试的时候会经常遇到<select></select>标签的下拉框,那么在Python里如何实现去操作这种控件呢?今天就给大家分享一下这个玩法.为了让大 ...

  9. python+selenium四:iframe查看、定位、切换

    iframe是HTML里面嵌套HTML的一种框架 1.查看iframe 1.Top Window:可直接定位 2.iframe#i:说明此元素在iframe上 3.iframe显示为空:(id或nam ...

随机推荐

  1. 测试word 2013发布blog

    测试图片和各种格式   使用Windows Live Writer 2012和Office Word 2013 发布文章到博客园全面总结 (亲测可用)   我的一些感受: 缺点 (1) Word201 ...

  2. ActiveMQ in Action(2) - Transport

    关键字: activemq 2.2 Transport    ActiveMQ目前支持的transport有:VM Transport.TCP Transport.SSL Transport.Peer ...

  3. c++的函数模板和类模板

    函数模板和普通函数区别结论: 函数模板不允许自动类型转化 普通函数能够进行自动类型转换 函数模板和普通函数在一起,调用规则: 1 函数模板可以像普通函数一样被重载 2 C++编译器优先考虑普通函数 3 ...

  4. Gentoo安装详解(四)-- 声卡设置

    硬件检测 To choose the right driver, first detect the used audio controller. You can use lspci for this ...

  5. SQL 课程 子查询

    今天,我主要学习了子查询的内容. create database lianxi0720 go use lianxi0720gocreate table bumen( bcode int primary ...

  6. iOS中的触摸事件,手势识别,摇晃事件等

    在iOS中,事件可以划分为以下几类: 1.触摸事件:通过触摸,手势进行触发(手指点击.缩放等) 2.运动事件:通过加速器触发(例如手机晃动) 3.远程控制事件:通过其他远程设备触发(例如耳机控制按钮) ...

  7. buffer小解

    Buffer代表一个缓冲区,存储二进制数据,是字节流 创建: 创建Buffer有4种方式: 1.new Buffer(size) 以字节为单位创建指定大小的Buffer eg: var buf= ne ...

  8. mysql无法启动,一直处于启动状态解决【Mac osx 】

    最近,遇到一个问题,就是mac 使用homebrew 安装了mysql,今天使用mysql.server start,mysql无法启动了,restart还找不到pid,说明服务并没有启动! 错误如下 ...

  9. VBS 自动发送邮件

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  10. JDBC事务和JTA事务的区别

    转自:JDBC和JTA事务的区别 一.事务概述事务表示一个由一系列的数据库操作组成的不可分割的逻辑单位,其中的操作要么全做要么全都不做.与事务相关的操作主要有:BEGIN TRANSACTION: 开 ...