QTP自传之web常用对象
随着科技的进步,“下载-安装-运行”这经典的三步曲已离我们远去。web应用的高速发展,改变了我们的思维和生活习惯,同时也使web方面的自动化测试越来越重要。今天,介绍一下我对web对象的识别,为以后的对象库编程打下基础。
Browser
Browser对象即浏览器对象,例如IE,FF,Chrome。Browser对象是所有web对象的父级对象,是金字塔的顶端,我在Description properties中对它也没有什么约束。使用Object Spy查看Browser对象


Properties中可以看到浏览器的相关属性,因为我现在测试的系统需要测试IE6的兼容性,大家看到我的IE版本还是6-_-! Operations列出了Browser对象可以使用的方法,下面介绍几个常用的方法(先将Browser对象加入对象库)。
1.SystemUtil.Run,打开浏览器,具体使用方式可以F1查看。
2.Sync,同步方法,意思是等待浏览器完全打开再进行下一步的操作。
3.Navigate,打开URL。
4.Close,关闭浏览器。
Systemutil.Run "iexplore.exe"
Browser("Browser").Sync
Browser("Browser").Navigate ("http://localhost/qtp/demo-login.php")
Browser("Browser").Close
tips:打开指定网址还可以用Systemutil.Run方法,上述代码可以简化为
Systemutil.Run "iexplore.exe","http://localhost/qtp/demo-login.php"
Browser("Browser").Close
Page
Page对象一般是Browser的子对象,每一个页面就是一个Page对象,Page对象的Name值是HTML标签中Title的值。Page对象的重要方法有Exist、Sync、Childobjects等。实际工作中对Browser和Page的操作很少,大多是一些打开关闭和同步的操作。
WebEdit
网页中的输入框可以被我识别为WebEdit对象,Operations里依然有很多方法,大家可以自行查看。

<html>
<head>
<title>web对象演示</title>
<meta http-equiv="Content-type" content="text/html" charset="utf-8">
<style>
.content{
width:260px;
height:30px;
}
.edit{
width:170px;
}
span{
width:70px;
}
</style>
</head>
<body>
<form action="" method="POST">
<div class="content">
<span>text</span><input type="text" name="web" class="edit">
</div>
<div class="content">
<span>password</span><input type="password" name="web" class="edit">
</div>
<div class="content">
<span>textarea</span><textarea rows="5" cols="20" class="edit"></textarea>
</div>
</form>
</body>
</html>
WebEdit中使用较多的set和GetROProperty方法,set用来设置输入框中的值,GetROProperty获取运行时对象的值。
Browser("web对象演示").Page("web对象演示").WebEdit("text").Set ""
Browser("web对象演示").Page("web对象演示").WebEdit("password").Set ""
Browser("web对象演示").Page("web对象演示").WebEdit("textarea").Set ""
a=Browser("web对象演示").Page("web对象演示").WebEdit("text").GetROProperty("value")
b=Browser("web对象演示").Page("web对象演示").WebEdit("password").GetROProperty("value")
c=Browser("web对象演示").Page("web对象演示").WebEdit("textarea").GetROProperty("value")
msgbox "text="+a+";password="+b+";textarea="+c
运行后输出如下

Link
顾名思义,Link是网页中的链接,我们在刚才的网页中加入如下代码
<div class="content">
<span>link</span><a href="http://www.baidu.com">点这里跳转到百度</a>
</div>

对Link对象的操作主要有Click、CheckProperty。CheckProperty方法是检查Link对象的url属性是否正确,click就是点击操作,运行下方代码,页面会自动跳转至百度。
'检查url属性是否正确
Browser("web对象演示").Page("web对象演示").Link("点这里跳转到百度")_
.CheckProperty "url","http://www.baidu.com/"
'如果正确执行Click方法
If Reporter.RunStatus=Pass Then
Browser("web对象演示").Page("web对象演示").Link("点这里跳转到百度").Click
End If
WebButton
WebButton对象就是页面中各式各样的按钮啦,主要操作就是Click:)

WebElement
WebElement主要是页面中的div,span,p等标签包涵的内容,一般用来验证数据的正确性,例如上面例子中的span标签。

If Browser("web对象演示").Page("web对象演示")_
.WebElement("password").GetROProperty("innerhtml")="password" then
msgbox "ok"
end if
WebList
我将页面中的下拉框识别为WebList对象,在我们的演示网页中加入以下代码。
<div class="content">
<span>select</span>
<select>
<option value ="php">php</option>
<option value ="java">java</option>
<option value="vbs">vbs</option>
<option value="python">python</option>
</select>
</div>

注意Properties中的all items属性,它包括了list中的所有选项,选择WebList中的选项用的是Select方法,用法和set方法一样。
WebRadioGroup && WebCheckBox
WebRadioGroup单选框对象,WebCheckBox复选框对象,加入如下代码。
<div class="content">
<span>radio</span>
<input type="radio" name="sex" value="boy" checked="checked">男
<input type="radio" name="sex" value="girl">女
</div>
<div class="content">
<span>checkbox</span>
<input type="checkbox" name="swim" value="swim" id="swim">游泳
<input type="checkbox" name="game" value="game" id="game">游戏
<input type="checkbox" name="read" value="read" id="read">阅读
</div>


选择单选框和复选框的代码如下
Browser("web对象演示").Page("web对象演示").WebRadioGroup("sex").Select "girl"
Browser("web对象演示").Page("web对象演示").WebCheckBox("read").Set "ON"
Browser("web对象演示").Page("web对象演示").WebCheckBox("swim").Set "ON"
WebTable
WebTable对象是网页控件中的重点与难点,在网页布局中table一般用于数据的展示,这也是我们测试的重点所在。老样子,现在网页中创建table控件,加入以下代码。
<table>
<tr><td>text1</td><td>textarea1</td><td>sex1</td><td>hobby1</td></tr>
<tr><td>text2</td><td>textarea2</td><td>sex2</td><td>hobby2</td></tr>
<tr><td>text3</td><td>textarea3</td><td>sex3</td><td>hobby3</td></tr>
</table>
并在style标签中加入
table{
border: 1px solid black;
padding:;
margin:0 auto;
border-collapse: collapse;
}
td{
border: 1px solid black;
font-size:12px;
padding: 3px 3px 3px 8px;
color: black;
}

从图中可以看到,我将td中识别为WebElement对象,将td的父级元素即table识别为WebTable对象。WebTable对象的方法有很多,这里列举几个常用的方法,参考下面的代码。
'获取列数
col=Browser("web对象演示").Page("web对象演示").WebTable("table").ColumnCount()
'获取行数
row=Browser("web对象演示").Page("web对象演示").WebTable("table").RowCount
'获取指定单元格的值
info=Browser("web对象演示").Page("web对象演示").WebTable("table").GetCellData(,)
'得到指定单元格内的测试对象的数目
Dim obj
obj=Browser("web对象演示").Page("web对象演示").WebTable("table").ChildItemCount(,,"WebEdit")
msgbox "列数="+CStr(col)+" 行数="+CStr(row)+" 第一行第一列="+info+_
"有"+CStr(obj)+"个WebEdit对象"
运行结果如下

对于WebTable对象大部分情况下使用描述性编程,至于什么是描述性编程,那又是另一个故事了。
QTP自传之web常用对象的更多相关文章
- QTP之web常用对象
web对象是我做自动化以来最早学习,最早接触的.对现在而言也是最熟悉不过的了,但是为了以后更稳健的前进,对基础的东西搞扎实,相信以后的路会顺畅许多,下边简单汇总下web的常用几类对象: Browser ...
- JavaScript常用对象的方法和属性
---恢复内容开始--- 本文将简单介绍JavaScript中一些常用对象的属性和方法,以及几个有用的系统函数. 一.串方法 JavaScript有强大的串处理功能,有了这些串方法,才能编写出丰富多彩 ...
- dotweb框架之旅 [二] - 常用对象-App(dotweb)
dotweb属于一个Web框架,希望通过框架行为,帮助开发人员快速构建Web应用,提升开发效率,减少不必要的代码臃肿. dotweb包含以下几个常用对象: App(dotweb) App容器,为Web ...
- dotweb框架之旅 [三] - 常用对象-HttpServer
dotweb属于一个Web框架,希望通过框架行为,帮助开发人员快速构建Web应用,提升开发效率,减少不必要的代码臃肿. dotweb包含以下几个常用对象: App(dotweb) App容器,为Web ...
- dotweb框架之旅 [四] - 常用对象-HttpContext
dotweb属于一个Web框架,希望通过框架行为,帮助开发人员快速构建Web应用,提升开发效率,减少不必要的代码臃肿. dotweb包含以下几个常用对象: App(dotweb) App容器,为Web ...
- MVC5中Model层开发数据注解 EF Code First Migrations数据库迁移 C# 常用对象的的修饰符 C# 静态构造函数 MSSQL2005数据库自动备份问题(到同一个局域网上的另一台电脑上) MVC 的HTTP请求
MVC5中Model层开发数据注解 ASP.NET MVC5中Model层开发,使用的数据注解有三个作用: 数据映射(把Model层的类用EntityFramework映射成对应的表) 数据验证( ...
- Java的常用对象①②
Java的常用对象① Java的常用对象有很多,这里只对lang包中常用的Object,Date(Calendar,DateFormat,Math),System,Runtime进行介绍.㈠Objec ...
- DOM_05之DOM、BOM常用对象
1.HTML DOM常用对象之Table:①创建:createTHead():createTBody():createTFoot():②删除:deleteTHead():deleteTFoot():③ ...
- DOM_04之常用对象及BOM
1.添加:①var a=document.createElement("a"):②设置关键属性:③将元素添加到DOM树:a.parent.appendChild(a):b.pare ...
随机推荐
- Android清单文件AndroidMenifest.xml
1.AndroidMenifes.xml清单文主要结构件结构 所谓主要结构就是每一个清单文件中都必不可少的结构主要是下面三层 第一层.menifest 第二层.application,use-sdk ...
- JAVA DATE解析(时间戳解析为固定格式)
public class SimpleDateFormat extends DateFormat SimpleDateFormat 是一个以国别敏感的方式格式化和分析数据的具体类. 它允许格式化 (d ...
- kill session真的能杀掉进程吗
session1 确认sidSYS @ prod > select userenv('sid') from dual; USERENV('SID')-------------- 144 sess ...
- IOS 多线程,线程同步的三种方式
本文主要是讲述 IOS 多线程,线程同步的三种方式,更多IOS技术知识,请登陆疯狂软件教育官网. 一般情况下我们使用线程,在多个线程共同访问同一块资源.为保护线程资源的安全和线程访问的正确性. 在IO ...
- hdoj 1892(二维树状数组)
Problem H Time Limit : 5000/3000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total Sub ...
- hdu 4502吉哥系列故事——临时工计划 (简单DP)
Problem Description 俗话说一分钱难倒英雄汉,高中几年下来,吉哥已经深深明白了这个道理,因此,新年开始存储一年的个人资金已经成了习惯,不过自从大学之后他不好意思再向大人要压岁钱了,只 ...
- Windows的命令行怎么支持通配符
摸索出一个小技巧,虽然Windows的命令行本身不支持通配符,但可以在脚本里把传进来的参数当通配符用 只要加上@ARGV = glob "@ARGV";就行了 @ARGV = gl ...
- in_array 判断问题的疑惑解决。
面试题中有一条是关于in_array判断的,题目如下: 如何大家没有深入了解in_array的类型判断过程,而是根据经验来选择,肯定很多人也是是选择了D答案的,具体的原因我也是从牛人的博客里面得到答案 ...
- ExtJS 4学习
主要是选自<Ext js 权威指南>描述的是Extjs4的版本 模板代码如下:(略有改动,原因是当前文件目录下放置了extjs的包) <!DOCTYPE HTML PUBLIC ...
- shell调用shell
在默认条件下,执行shell文件会出现permission denied报错,一般是没有可执行权限.用chmod修改权限 chomd 777 score.sh //把所有权限给aa文件 777代表 ...