QTP自传之对象库编程
对象库编程是我们平时工作中使用最多的编程方式,在自动化脚本开发中起到举足轻重的作用,与描述性性编程相比,更直接和易于维护,今天就和大家简单的聊聊如何进行对象库编程。
既然是对象库编程,肯定要对已存在于对象库中的对象进行编程,先准备将要使用的网页,我们将上一节的例子稍加修改,做出一个简单的用户调查页面。

点击【提交】,跳转到用户信息显示页面。

依然采用wamp环境,下面是页面代码,很简单。
<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;
border-color: gray;
border-width: 1px;
}
span{
width:70px;
}
table{
border: 1px solid black;
padding:0;
margin:0 auto;
border-collapse: collapse;
} td{
border: 1px solid black;
font-size:12px;
padding: 3px 3px 3px 8px;
color: black;
}
</style>
</head>
<body>
<form action="user-info.php" method="post">
<div class="content">
<span>用户名</span><input type="text" name="username" class="edit">
</div>
<div class="content">
<span>邮箱</span><input type="mail" name="mail" class="edit">
</div>
<div class="content">
<span>个人介绍</span><textarea rows="5" cols="20" class="edit"></textarea>
</div>
<div class="content">
<br><span>开发语言</span>
<select name="language">
<option value ="php">php</option>
<option value ="java">java</option>
<option value ="vbs">vbs</option>
<option value ="python">python</option>
</select>
</div>
<div class="content">
<br><span>爱好</span>
<input type="checkbox" name="hobby[0]" value="电影" id="film">电影
<input type="checkbox" name="hobby[1]" value="游戏" id="game">游戏
<input type="checkbox" name="hobby[2]" value="阅读" id="read">阅读
</div>
<div class="content">
<br><span>性别</span>
<input type="radio" name="man" value="男" checked="checked">男
<input type="radio" name="woman" value="女">女
</div>
<div class="content">
<br><span>点此提交</span>
<input type="submit" name="sub" value="提交" class="button1">
</div>
</form>
<div class="content">
<span>友情链接</span><a href="http://www.baidu.com">百度</a>
</div>
</body>
</html>
<html>
<head>
<title>用户信息示</title>
<meta http-equiv="Content-type" content="text/html" charset="utf-8">
<style>
table{
border: 1px solid black;
padding:0;
margin:0 auto;
border-collapse: collapse;
} td{
border: 1px solid black;
font-size:20px;
padding: 3px 3px 3px 8px;
color: black;
}
</style>
</head>
<body>
<table>
<tr><td>用户名</td><td>邮箱</td><td>性别</td><td>爱好</td><td>开发语言</td></tr>
<?php
if($_POST["hobby"]){
foreach($_POST["hobby"] as $value){
$hobbies.=$value;
}
} if($_POST["sub"]){
echo "<tr><td>".$_POST["username"]."</td><td>".$_POST["mail"]."</td><td>".$_POST["sex"]."</td><td>".$hobbies."</td><td>".$_POST["language"]."</td></tr>";
}
?>
</table>
</body>
</html>
将对象添加至对象库

编写代码的两种方式
- 拖动对象自动生成代码
切换左侧窗口至Available Keywords模式,将对象拖动至Expert View中。

可以看到,自动生成了一行代码,并给出了WebButton对象的基本方法Click。如果需要其他的方法,可以把.Click删除,在WebButton("提交")后输入"."即可。
- 步骤生成器(F7)

Category中选择“Test Object”,点击Object行最右侧的按钮,选择“提交”,点击【OK】,Operation 选择 “Click”,点击【OK】。



其实还有一种编写代码的方式,那就是手动写全部代码。输入Browser和左括号会自动完成Browser("web对象演示"),在输入.Page左括号,如下图。

选择“web对象演示”,接着输入.WebButton("提交").后会显示当前对象即WebButton("提交")可以使用的方法。

获取对象属性的方法
- GetTOProperty
获取对象库中对象的属性值,使用方法:对象.GetTOProperty(属性名)。
print Browser("web对象演示").Page("web对象演示").WebButton("提交").GetTOProperty ("type")
print Browser("web对象演示").Page("web对象演示").WebButton("提交").GetTOProperty ("name")
print Browser("web对象演示").Page("web对象演示").WebButton("提交").GetTOProperty( "outerhtml")
运行后结果如图,与html中的代码是一致的。

如果想获取对象的全部属性,可以使用GetTOProperties方法。
set tb=Browser("web对象演示").Page("web对象演示").WebButton("提交").GetTOProperties()
For i= to tb.count-
name=tb(i).Name
Value=tb(i).Value
print name & "=" & Value
Next
- SetTOProperty
设置对象库中对象的属性值,使用方法:对象.SetTOProperty(属性名,值)。
Browser("web对象演示").Page("web对象演示").WebButton("提交").SetTOProperty "type","edit"
Browser("web对象演示").Page("web对象演示").WebButton("提交").SetTOProperty "name","编辑框"
print Browser("web对象演示").Page("web对象演示").WebButton("提交").GetTOProperty("type")
print Browser("web对象演示").Page("web对象演示").WebButton("提交").GetTOProperty("name")
需要注意的是,这里对对象库中属性值的修改是临时的,在脚本运行结束时会自动还原。
- GetROProperty
获取对象运行时的属性,使用方法:对象.GetTOProperty(属性名)。
Set tb=Browser("web对象演示").Page("web对象演示").WebEdit("用户名")
print "对象库中Value="&tb.GetTOProperty("value")
tb.Set "测试"
print "运行时对象库中Value="&tb.GetTOProperty("value")
print "运行时对象Value=" &tb.GetROProperty("value")
结果如下图,输入框中输入值以后,对象库中的value属性依然为空,GetROProperty 获取的是对象在脚本运行时的临时属性值。

开始吧
完成文章开始图片中输入效果的代码如下
Browser("web对象演示").Page("web对象演示").WebEdit("用户名").Set "test"
Browser("web对象演示").Page("web对象演示").WebEdit("邮箱").Set "11111@qq.com"
Browser("web对象演示").Page("web对象演示").WebEdit("个人介绍").Set "haha"
Browser("web对象演示").Page("web对象演示").WebList("开发语言").Select "java"
Browser("web对象演示").Page("web对象演示").WebCheckBox("电影").Set "ON"
Browser("web对象演示").Page("web对象演示").WebCheckBox("游戏").Set "ON"
Browser("web对象演示").Page("web对象演示").WebRadioGroup("性别").Select "男"
Browser("web对象演示").Page("web对象演示").WebButton("提交").Click
如果感觉看的不舒服可以按下Ctrl+W,自动转换成with模式,还原按下Ctrl+Shit+W.

With Browser("web对象演示").Page("web对象演示")
.WebEdit("用户名").Set "test"
.WebEdit("邮箱").Set "11111@qq.com"
.WebEdit("个人介绍").Set "haha"
.WebList("开发语言").Select "java"
.WebCheckBox("电影").Set "ON"
.WebCheckBox("游戏").Set "ON"
.WebRadioGroup("性别").Select "男"
.WebButton("提交").Click
End With
如何验证结果
点击【提交】以后就跳转到了信息显示页面,如何验证信息的正确性呢?很简单,调用WebTable对象的GetCellData方法即可,一个简单的填写验证代码如下。
With Browser("web对象演示")
With .Page("web对象演示")
.WebEdit("用户名").Set "test"
.WebEdit("邮箱").Set "11111@qq.com"
.WebEdit("个人介绍").Set "haha"
.WebList("开发语言").Select "java"
.WebCheckBox("电影").Set "ON"
.WebCheckBox("游戏").Set "ON"
.WebRadioGroup("性别").Select "男"
.WebButton("提交").Click
End With
With .Page("用户信息示")
username=.WebTable("用户名").GetCellData(,)
mail=.WebTable("用户名").GetCellData(,)
sex=.WebTable("用户名").GetCellData(,)
End With
End With
If username="test" and mail="11111@qq.com" and sex="男" Then
msgbox "OK"
End If
QTP自传之对象库编程的更多相关文章
- QTP自传之对象
对象在手,测试我有 大家别误会,这里说的对象可不是值指男女朋友,而是对被测控件的识别.经过昨天的录制,大家一定很奇怪为什么我可以做到精确的回放操作,这都要归功于对象,下面就隆重的介绍我在对象识别方面的 ...
- QTP设置共享对象库
第一步:把需要加到共享对象库中的各个用例脚本的对象库,分别导出成.tsr文件. 操作方法:先用QTP打开已经录制完毕的脚本后,选择Resources-->Object Repository.然后 ...
- QTP自传之web常用对象
随着科技的进步,“下载-安装-运行”这经典的三步曲已离我们远去.web应用的高速发展,改变了我们的思维和生活习惯,同时也使web方面的自动化测试越来越重要.今天,介绍一下我对web对象的识别,为以后的 ...
- QTP 学习 - 对象库
QTP的关键字视图和专家视图 1.Keyword view(关键字视图) 在录制脚本的过程中,用户执行的每一个步骤,在关键字视图中记录为一行. 关键字视图直观有效,用户可以很清楚的看到被录制对象的录制 ...
- QTP自传之描述性编程
描述性编程,即采用描述性的语言定位对象,不需要事先将对象添加到对象库中.下面,就说说如何使用描述性编程,我们将继续使用对象库编程中的网页. 使用描述性编程的两种方法 直接描述 对象("属性名 ...
- QTP自传之测试报告
前言 测试报告是测试阶段的最后产出,也是最重要的产出,自动化测试报告也是如此.前期所做的工作,添加对象.编写脚本等都是为了可以生成一份正确.严谨的测试报告.我作为一款功能全面的自动化测试工具,毫无疑问 ...
- QTP自传之录制
录制,是一件吃力不讨好的活.很多人以为录制就是我的主要甚至全部的功能,这是大错特错的.不过,录制功能却是不熟悉我的人了解我的有效途径,是大家学习的有力武器.今天就先从录制功能说起吧. 说到录制,就不得 ...
- Python中使用模块和库编程
""" python中使用模块和库编程 导入模块 import modulename [as alias] from modulename import fun1,fun ...
- C++服务器开发之基于对象的编程风格
Thread.h #ifndef _THREAD_H_ #define _THREAD_H_ #include <pthread.h> #include <boost/functio ...
随机推荐
- Winform 程序中dll程序集嵌入exe可执行文件
关于这方面,Google一下有很多方法,参考: http://blog.csdn.net/astonqa/article/details/7300856 但按照以上的方法我并没有成功,于是继续找到了一 ...
- WebForm开发常用代码
1.获取服务器绝对路径: public static string GetMapPath(string strPath) { if (HttpContext.Current != null) { re ...
- memcached和mongodb 在windows下安装
要在新机器上安装memcached和mongodb服务,折腾了一天,终于把这两个服务在windows下跑起来了. memcached主要参考http://www.rootop.org/pages/27 ...
- 【POJ1195】【二维树状数组】Mobile phones
Description Suppose that the fourth generation mobile phone base stations in the Tampere area operat ...
- HTML5 表单与文件
-新增元素与属性 form.formaction.formmethod.placeholder(处于未输入状态时文本框显示的输入提示).autofocus(自动获取光标焦点).list(该属性的值为某 ...
- Mvvm绑定datagrid或listview的selectItems的方法[转]
单选,很简单,将SelectedItem与ViewModel的属性进行双向绑定就OK了 多选,由于ListView的SelectedItems不能进行绑定,需要将ListView的SelectionC ...
- php之购物车类思路及代码
<?php /* 购物车类 1.整站范围内,购物车--全局有效 解决:把购物车的信息,放在session里 2.既然全局有效,购物车的实例只有一个 解决:单例模式 技术选型:session+单例 ...
- wechat-php-sdk
wechat-php-sdk 微信公众平台php版开发包 支持消息加解密方式的明文模式.兼容模式.安全模式 支持自动接入微信公众平台(步骤) 功能模块 Wechat (处理自动接入.获取与回复微信消息 ...
- 【C语言】字符集和词汇
C语言字符集和词汇 一.相关基础知识 字符是组成语言的最基本的元素 词汇,又称语汇,是一种语言里所有的(或特定范围的)词和固定短语的总和 二.具体内容 C语言字符集由:字母.数字.空格.标点和特殊字符 ...
- Vue 2.0基础
我们将会选择使用一些vue周边的库vue-cli, vue-router,vue-resource,vuex 1.使用vue-cli创建项目2.使用vue-router实现单页路由3.用vuex管理我 ...