Web自动化测试原理

 目前有很多Web UI自动化测试框架,如WatiN,Selinimu,WebDriver等,这些框架都可以操作Web中的控件,模拟用户输入,点击等操作,实现Web自动化测试。其实这些工具的原理都一样,都是通过调用IE COM接口和HTMLDOM 对IE浏览器以及WEB测试对象的操作。 本文介绍脱离这些自动化测试框架,通过AutoIT直接使用IE COM接口结合HTML DOM对IE浏览器以及WEB对象进行自动化测试的方法。

  1.IE常用操作

  首先新建一个IE COM对象,配置IE窗口属性,模拟用户同时跳转至相应的页面同时进行相应操作。访问页面时,需要等待页面加载完成后再进行操作。这里我们可以使用IE COM的BUSY属性检查浏览器是否处于加载状态,再进行相应的操作。示例代码如下:

  2.利用DOM操作测试对象

  现在已经会使用IE COM组件来对IE浏览器进行自动化的操作,但是对于浏览器页面中的测试对象IE COM是无法对其进行操作的,这个时候就需要使用HTML DOM来对其进行操作。

  2.1 HTML DOM简介

  HTML DOM是HTML Document Object Model(文档对象模型)的缩写,它将网页中的各个元素都看作一个个对象,从而使网页中的元素也可以被计算机语言获取或者编辑。 常用DOM 属性如下:

  className.同一样式规则的元素用相同的类名。可以通过className快速过滤出一组类似的元素。

  document.用于指向包含当前元素的文档对象。

  id.当前元素的标识。如果文档中包含多个相同id的元素,则返回一个数组。

  innerHTML.用于指向当前元素的开始标记和结束标记之间的所有文本和HTML标签。

  innerText.用于指向当前元素的开始标记和结束标记之间的所有文本和HTML标签。

  offsetHeight, offsetWidth.元素的高度和宽度。

  offsetLeft, offsetTop.当前元素相同对于父亲元素的左边位置和顶部位置。

  outerHTML.当前元素的开始标记和结束标记之间的所有文本和HTML标签。

  outerText.当前元素的开始标记和结束标记之间的所有文本,但不包括HTML标签。

  parentElement.当前元素的父亲元素。

  sourceIndex.元素在document.all集合中的索引(index)。

  style.元素的样式表单属性。

  tagName.当前元素的标签名。

  title.在IE中,代表元素的tool tip文本

  常用DOM方法如下:

  click().模拟用户对当前元素的鼠标点击。

  contains(element).用于判断当前元素是否包含指定的元素。

  getAttribute(attributeName, caseSensitive).返回当前元素所包含的某个属性,参数attributeName为属性名、caseSensitive表示是否大小写敏感。

  setAttribute(attributeName, value, caseSenstive). 设置当前元素的属性。

  常用DOM 集合如下:

  All[].当前元素中包含的所有HTML元素的数组。

  children[].当前元素包含的子元素。

  2.2 种方法对比

  2.2.1getElementByID

  getElementByID( )方法可根据指定的id属性值得到对象。 首先需要分析页面,在Chome浏览器中选择相应的网页元素点击右键选择"审查元素"(或使用IE Develop Toolbar或者firebug等插件亦可),即可得到页面控件的ID等信息。

 

通过getElementByID方法获取百度搜索框及搜索按钮对象,并对其进行输入及点击操作,从而完成搜索操作。示例代码如下:

  2.2.2getElementsByName

  getElementsByName( )方法可返回带有指定名称的对象的集合。

  同样获取网页元素name后,即可通过getElementsByName方法获取定位对象,并对其进行操作(与getElementByID返回的单个对象不同,getElementsByName返回的是一个元素的集合,需要通过遍历对象才能对其进行操作):

  2.2.3getElementsByTagName

  getElementsByTagName( )方法通过查找整个HTML文档中的任何HTML元素,传回指定名称的元素集合。 因此也可使用getElementsByTagName获取TAG名,通过得到相同类型的元素及在遍历中进行判断控件类型并进行操作:

  2.3 利用FORM名来获取对象元素

  使用FORM名来获取对象元素会大大简化我们的脚本。首先查看百度的搜索框对应的FORM名,得到FORM名为f: 

通过如下简单的脚本,同样可以达到相同的效果:

  2.4 访问Web页面的Script脚本变量

  通过DOM还可以直接访问Web页面中的JavaScript或者VBScript中的变量。首先打开百度的源文件:

  可以看到在百度源文件的JavaScript脚本中定义了一个变量为k,并且赋值为d.f.wd(实际上就是百度搜索框对象)。那么可以直接使用parentWindow来访问Web页面Script中的变量k,对百度搜索框进行自动测试:

  3 总结

  本文主要介绍了利用IE的COM以及HTML DOM来自动化IE浏览器,以及对浏览器的一些控件对象进行自动化的操作,包括IE浏览器常用操作、利用DOM操作测试对象、利用FORM名来获取对象元素、访问Web页面的Script脚本变量等。 直接操作IE COM来实现Web自动化,不仅有助于有助于理解Web页面自动化测试框架的运行原理,还能脱离这些自动化测试框架自己快速建立一个轻量型的自动化测试程序,从而真正的提高测试效率。

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-08-20 21:29:48

Web自动化测试原理的相关文章

Web自动化测试中针对图片验证码问题的常见解决思路

图片验证码(Captcha)问题在自动化测试中是一个很常见的问题,也是一个很棘手的问题.图片验证码设计的初衷其实就是为了防自动化,防止一些人利用自动工具恶意攻击网站,而很不幸的是,我们所使用的一些自动化测试工具也包含在内.当然了,对付验证码也不是一点办法都没有,方法还是有很多的,只是我们需要跳出技术层面去思考问题.废话少说,先来看下几种常见的解决办法: 1.识别法(技术) 识别法就是对验证码的图片进行字符识别,其原理就是通过识别算法解析图片,其解析的精准度取决于图片的复杂程度. 熟悉QTP的同学

使用.net开发Web自动化测试工具

前段时间,由于测试需要,使用C#结合WatiN组件,开发了一个小小的web自动化测试 工具. WatiN 是一个非常简单灵活的测试框架,可以模拟用户在客户端浏览器中的大部份操 作,API也比较简单. 一.实现url调用和web控件的控制很简单,参考下面代码: 请 for (int i = 0; i < txtUrls.Length; i++) { try { WatiN.Core.DialogHandlers.AlertDialogHandler dh = new WatiN.Core.Dial

Windows环境搭建Web自动化测试框架Watir(基于Ruby)

web自动化测试一直是一个比较迫切的问题 图1-1 需要安装的工具 http://railsinstaller.org/ 因为安装Ruby还需要用到其他的一些开发工具集,所以建议从网站http://railsinstaller.org/ 下载,而且使用该安装包的话,它会帮你把环境变量也设置完毕,我使用的版本是:railsinstaller-2.2.4.exe,建议下载最新版本. 开始安装RailsInstaller工具包,安装到默认位置即可. 这个对勾建议打上,它会帮你配置git和ssh,安装过

基于Sahi和Twist搭建的Web自动化测试框架

Twist是一个基于Eclipse开发的自动化测试平台,它是ThoughtWorks公司的一款商业软件.Sahi是一个Web自动化工具,有Tyto公司创建,具有免费版和专业版两个版本.作者将在本文中简单介绍一下这两个工具,以及基于它们搭建的轻量级Web自动化测试框架,最后重点跟读者分享一些个人使用的经验和技巧. 在介绍Sahi之前,首先简单描述一下作者参与的项目.这个项目是为一家公司做商业应用的实施.由于时间紧迫,测试人员较少,大部分时间都是在针对主要功能做手工测试.为了减少一些重复的手工劳动,

Lemon-probe 1.4.0 - WEB自动化测试工具

应用场景 软件首页: https://www.lemonce.net 如果您希望项目发布的时候能够再期待的环境中表现一致,如果您希望在项目版本迭代时确保新旧功能都能正确工作,如果您希望项目的BUG出现一次后确保不再重复出现,如果您要测移动端,如果您想测微信项目,如果您想测H5应用,如果您需要图形界面,如果您讨厌配置复杂测试环境,如果您想告别Selenium复杂的测试环境... 那就使用Lemonce这款简单有效的测试工具! Lemonce目前支持的浏览器包括:IE9-IE11(需要调整Inter

基于业务的Web自动化测试工具—Sahi

谈及开源Web 自动化测试工具,相信很多人立刻会想到Selenium.本文给大家介绍的是另一款开源Web 自动化测试工具Sahi.Sahi的网站上有关于与Selenium的对比,不过这不是我们今天探讨的主题.这篇文章的主要目的是向读者简单的介绍一下Sahi并分享一下个人使用Sahi测试Dojo应用的经验,希望对大家能有所帮助. 1. Web2.0应用测试的困境 在开始介绍Sahi之前,我们一起来看看在开发Web 自动化测试(特指Web 2.0应用)时常面临的两大技术问题. 页面元素的识别 根据个

Web自动化测试 Selenium 1/3

Selenium 名字的来源 在这里,我还想说一下关于 Selenium 名字的来源,很有意思的 : > : Selenium 的中文名为 " 硒 " ,是一种化学元素的名字,它 对 汞 ( Mercury )有天然的解毒作用,实验表明汞暴露水平越高,硒对汞毒性的拮抗作用越明显,所以说硒是汞的克星.大家应该知道 Mercury 测试工具系 列吧( QTP , QC , LR , WR... ),他们功能强大,但却价格不菲,大家对此又爱又恨!故 thoughtworks 特意把他们

第一章 Java Web工作原理

一:在本章我们将学到如下的内容 >HTTP协议原理 >服务器端Web编程原理 >Servlet与Web容器 >Java Web应用程序的组成 >Tomcat介绍   一:1.1解析HTTP协议 HTTP:超文本传输协议(HyperText Transfer Protocol) HTTP是一种无状态的协议,意思是指在Web浏览器和Web服务器之间不需要建立持久的连接. HTTP是遵循请求/响应(Request/Response)模型的. HTTP处理流程:     1.1.1建

J2EE的Web服务原理和体系结构慨述

Web服务(Web Services)是目前程序设计领域中的一项新技术,是一个崭新 的分布式计算模式,在不同系统平台之间具有互操作性,通过因特网,实现不同 应用程序之间的远程过程调用.Web服务使用基于XML 的消息处理作为基本的数 据通讯方式,消除使用不同组件模型.操作系统和编程语言的系统之间存在的差 异,使异类系统能够作为单个计算网络协同运行.开发人员可以用象过去在创建 分布式应用程序时使用组件一样的方式创建将来自各种源的Web服务组合在一起 的应用程序. Web服务是建立在一些通用协议的基