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

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

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

依然采用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. eclipse-自动注释

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

  2. Ubuntu 12.04下解决Rhythmbox Music Player乱码问题

    1.打开终端输入如下信息: $ sudo gedit ~/.profile 2.在打开的文档末尾加上如下两句: export GST_ID3_TAG_ENCODING=GBK:UTF-8:GB1803 ...

  3. c读写文件相关

    1.打开文件: 函数原型: FILE * fopen(const char * path,const char * mode); 返回值: 文件顺利打开后,指向该流的文件指针就会被返回.如果文件打开失 ...

  4. SGU 188.Factory guard

    模拟 code #include <iostream> #include <cstdio> #define LEN 1000 using namespace std; int ...

  5. 20款jquery下拉导航菜单特效代码分享

    20款jquery下拉导航菜单特效代码分享 jquery仿京东商城左侧分类导航下拉菜单代码 jQuery企业网站下拉导航菜单代码 jQuery css3黑色的多级导航菜单下拉列表代码 jquery响应 ...

  6. Cookie的基本使用

    1, 如何创建cookie <?php //创建cookie信息 //这个函数用于保存cookie //第一个参数,表示cookie一个key,第二个表示val,第三个表示cookie值,在客户 ...

  7. Form表单三种提交按钮的区别?

    1.<input type='button' id='btn' onclick='check()' value="提交"> 说明:只是普通的按钮(不附带提交功能),不会 ...

  8. CreateJS第0章- Canvas基础

    最近网页游戏比较火,以前做过一些小游戏,但是过段时间就都忘了,今天在这里记录一下学习过程,以备后用.做网页游戏有很多种框架,我是flash程序用Adobe出品的CreateJS最容易.基本上继承了fl ...

  9. CSS响应式web设计

    参考 1. 响应式web设计之CSS3 Media Queries http://www.cnblogs.com/mofish/archive/2012/05/23/2515218.html 2. 用 ...

  10. python连接mysql之pymysql模块

    以下demo均以python2中的mysqldb模块 一.插入数据 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import MySQLdb    conn = MyS ...