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

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

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

依然采用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. 补充一下sql server(临时表)

    说明:(1).临时表其实是放在数据库tempdb里的一个用户表:(2).TempTableName必须带“#”,“#"可以是一个或者两个,以#(局部)或##(全局)开头的表,这种表在会话期间 ...

  2. MySQL命令行下查看运行状态

    查看MySQL的运行状态用命令行的show语句show status是查看MySQL运行情况,和上面那种通过pma查看到的信息基本类似. show variables是查看MySQL的配置参数,还可以 ...

  3. .net excel利用NPOI导入oracle

    1.链接数据库 引用System.Data.OracleClient: //数据库链接字符串   Data Source如:192.168.5.153:1521/orcl string linkStr ...

  4. oracle数组学习资料

    --oracle数组,所谓数组就是  字段的 个数,数组应该很有用 --可变数组 declare  type v_ar is varray(10) of varchar2(30);   my_ar v ...

  5. iOS自动布局之autoresizingi

    对于iOS的app开发者来说,不会像Android开发者一样为很多的屏幕尺寸来做界面适配,因此硬编码的坐标也能工作良好,但是从设计模式上来说这不是好的做法.而且也还有一些问题,如iPhone5的适配, ...

  6. PHP+MySQL中对UTF-8,UTF8(utf8),set names gbk 的理解

    问题一:在我们进行数据库操作时会发现,数据库中表的编码用的是utf-8,但是在进行dos命令是要使用set names gbk (一)Mysql中默认字符集设置有四级:服务器级,数据库级,表级,和字段 ...

  7. topcoder算法练习3

    SRM144 DIV1 1100 point Problem Statement      NOTE: There are images in the examples section of this ...

  8. PHP框架_Smarty

    目录 1.环境搭建 2.基本配置 3.Smarty变量调节器 4.Smarty条件判断 5.Smarty的循环 6.Smarty模板的引用 7.Smarty类与对象的赋值与引用 8.smarty函数插 ...

  9. 定义文字用em、rem,效果和px一样

    1em=16px font-size: 2.4rem;/*2.4 × 10px = 24px*/

  10. ThinkPHP 笔记

    1.循环中使用比较运算符 <volist name="subjects" id="v">       <option value=" ...