对象库编程是我们平时工作中使用最多的编程方式,在自动化脚本开发中起到举足轻重的作用,与描述性性编程相比,更直接和易于维护,今天就和大家简单的聊聊如何进行对象库编程。

既然是对象库编程,肯定要对已存在于对象库中的对象进行编程,先准备将要使用的网页,我们将上一节的例子稍加修改,做出一个简单的用户调查页面。

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

依然采用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自传之对象库编程的更多相关文章

  1. QTP自传之对象

    对象在手,测试我有 大家别误会,这里说的对象可不是值指男女朋友,而是对被测控件的识别.经过昨天的录制,大家一定很奇怪为什么我可以做到精确的回放操作,这都要归功于对象,下面就隆重的介绍我在对象识别方面的 ...

  2. QTP设置共享对象库

    第一步:把需要加到共享对象库中的各个用例脚本的对象库,分别导出成.tsr文件. 操作方法:先用QTP打开已经录制完毕的脚本后,选择Resources-->Object Repository.然后 ...

  3. QTP自传之web常用对象

    随着科技的进步,“下载-安装-运行”这经典的三步曲已离我们远去.web应用的高速发展,改变了我们的思维和生活习惯,同时也使web方面的自动化测试越来越重要.今天,介绍一下我对web对象的识别,为以后的 ...

  4. QTP 学习 - 对象库

    QTP的关键字视图和专家视图 1.Keyword view(关键字视图) 在录制脚本的过程中,用户执行的每一个步骤,在关键字视图中记录为一行. 关键字视图直观有效,用户可以很清楚的看到被录制对象的录制 ...

  5. QTP自传之描述性编程

    描述性编程,即采用描述性的语言定位对象,不需要事先将对象添加到对象库中.下面,就说说如何使用描述性编程,我们将继续使用对象库编程中的网页. 使用描述性编程的两种方法 直接描述 对象("属性名 ...

  6. QTP自传之测试报告

    前言 测试报告是测试阶段的最后产出,也是最重要的产出,自动化测试报告也是如此.前期所做的工作,添加对象.编写脚本等都是为了可以生成一份正确.严谨的测试报告.我作为一款功能全面的自动化测试工具,毫无疑问 ...

  7. QTP自传之录制

    录制,是一件吃力不讨好的活.很多人以为录制就是我的主要甚至全部的功能,这是大错特错的.不过,录制功能却是不熟悉我的人了解我的有效途径,是大家学习的有力武器.今天就先从录制功能说起吧. 说到录制,就不得 ...

  8. Python中使用模块和库编程

    """ python中使用模块和库编程 导入模块 import modulename [as alias] from modulename import fun1,fun ...

  9. C++服务器开发之基于对象的编程风格

    Thread.h #ifndef _THREAD_H_ #define _THREAD_H_ #include <pthread.h> #include <boost/functio ...

随机推荐

  1. android 实现垂直的ProgressBar

    I had recently come across the need for a vertical progress bar but was unable to find a solution us ...

  2. 15、SQL Server 触发器

    SQL Server 触发器 触发器是一种特殊的存储过程,只有当试图用数据操作语言DML来修改数据时才会触发,DML包含对视图和表的增.删.改. 触发器分为DML触发器和DDL触发器,其中DML触发器 ...

  3. 版本控制-cvs

    我们实训用的是cvs. 团队协作: 代码版本控制软件:CVS.SVN.GIT(Git@开源中国) FTP:服务端.客户端 CVS: 服务端(源码仓库).客户端

  4. <html:text> Id属性

    可能 会遇到这样 的问题,需要通过document.getElementById得到<html:text>标签的id, 可是据说ie设置property后id就是一样的了,不过具体没有去测 ...

  5. angularjs kindEditor 中自定义按钮 弹出dialog

    1.angular-kindeditor.js 第38行左右加 editorConfig.items = ["placehoder"]; 2.en.js 第234行 placeho ...

  6. eclipse-自动注释

    在eclipse中自动添加'注释'的快捷键是'Alt+Shift+J',可以在 MyEclipse中的 Java->Code Style->Code Template->Commen ...

  7. Maven搭建Spring+Struts2+Hibernate项目详解

    http://www.bubuko.com/infodetail-648898.html

  8. CentOS 7重装mysql编译过程报错解决方法

    错误记录: [ 82%] Building C object libmysql/CMakeFiles/clientlib.dir/__/sql-common/client.c.o/usr/local/ ...

  9. acl操作记录

    官方文档内容: 1.CREATE_ACL Procedure创建ACL Note: This procedure is deprecated in Oracle Database 12c. While ...

  10. 欢迎使用 Markdown 编辑器写博客

    本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML ...