用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. java对数计算

    Java对数函数的计算方法非常有问题,然而在API中却有惊人的误差.但是假如运用了以下的方法,用Java处理数字所碰到的小麻烦就可以轻而易举的解决了. Sun的J2SE提供了一个单一的Java对数方法 ...

  2. memset用法总结

    memset是计算机中C/C++语言函数.将s所指向的某一块内存中的前n个 字节的内容全部设置为ch指定的ASCII值, 第一个值为指定的内存地址,块的大小由第三个参数指定,这个函数通常为新申请的内存 ...

  3. C++模板之类型与数据绑定

    有时候我们需要将类型与一些数据进行绑定,例如我们一般通过单例,将字符串与一个函数关联(一般称之为注册),之后通过字符串创建相关联的对象 class A { public: static A* Crea ...

  4. java中Class对象详解

    java中把生成Class对象和实例对象弄混了,更何况生成Class对象和生成instance都有多种方式.所以只有弄清其中的原理,才可以深入理解.首先要生成Class对象,然后再生成Instance ...

  5. ASP.NET MVC 使用带有短横线的html Attributes

    我们常常需要一个文本框来输入用户名,在asp.net mvc 中可以使用 TextBoxFor.有时候我们想为这个文本框添加一些特性,比如 html5 的data-,如果直接写data-是会提示错误的 ...

  6. LoadRunner编写Socket协议脚本方法

    本文主要介绍使用LoadRunner手工编写Windows Socket协议测试脚本的方法. 通过LoadRunner编写Windows Socket协议测试脚本,总体说来,比较简单.就像把大象放进冰 ...

  7. Mayor's posters问题处理

    题目的感悟: /*这道题的想法是先开一个数组,先构造一颗线段树,然后每次都进行一次更新最后我们在访问的时候只要看最外层还剩下那些数字,对他们进行统计然后将结果返回即可.这道题的难度本来是不大的,思路非 ...

  8. LeetCode OJ 220.Contains Duplicate 3

    Given an array of integers, find out whether there are two distinct indices i and j in the array suc ...

  9. MyEclipse运行到断点也跳过的问题

    如果是B/S开发也就是javaWeb开发的话,Tomcat 的启动模式要设置成Debug模式 还有下面是没运行时断点的样子: 运行的时候,断点会变成对钩,表示执行到它所在代码的时候会停下来:

  10. sscanf用法

    sscanf与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源. 1. 常见用法. 1 2 3 char buf[512] ; sscanf(" ...