第一篇:面向对象试行QTP

本文介绍如何在QTP中使用VB实现面向对象的自动化测试。通过自定义类实现控件的封装,并演示了如何利用这些类进行登录窗口的用户名和密码输入。

前言:最近从开发转到了自动测试,反正正在实习,有大把的时间。所以也乐于转型。而且,我还碰到了我的公司中的老师,亲爱的秦哥哥。但愿这一年的实习期能让我真正的掌握QTP的运行。

QTP,用VB。哈哈。好开心的。因为VB不支持继承,多态。那怎么面向对象呢?

我试了一试,居然是支持“类”这个概念的。而且,也有Public private之类的概念。好了,那就行了。可以慢慢的构造我自己的架构了。

 QTP中,可以用描述性编程来识别一个对象,这就让我有了抛弃控件库,使用完全的面向对象的方式NEW出一个又一个的控件来的想法。

描述:很简单,模拟在一个 javaWindow(一个普通的窗口) 中的 用户名(javeEdit )控件 密码 (javaEdit) 控件中输入相应的用户名和密码。

首先,我们要有一个类,这个类可以从系统中通过 title,定位到一个 javaWindow对象。因为javaWindow中,有可能有很多子控件,比如文本框(javaEdit) 按钮之类的。方便演示起见,只写了一个函数,那就是 通过子文本框的attachedtext属性获取子文本框实体。可以按需再进行添加N多的方便的方法。以完善这个类。

Class ClassJavaWindow
    '定义一些变量
    private m_JavaWindow
    Private m_ChildEdit    
 

    rem 根据title定义窗口实例
    Public function SetJavaWindow(title)
        set    m_JavaWindow=JavaWindow("title:="&title)
    End function    
    
    rem 方法,获取该窗口中的一个edit 的类对象,不是系统的javaEdit对象
    public function GetChildEdit(attachedtext)
        Set m_ChildEdit=new ClassJavaEdit
        m_ChildEdit.SetJavaEdit m_JavaWindow,attachedtext
        set GetChildEdit=m_ChildEdit
    End function  
End Class
 
主类写好了。在这个类中,函数只是创建出了一个新的对象,然后在茫茫系统中,通过传入的值找到这个控件。值得注意的是,像button,javaEdit之类的控件,是必须指定一个父控件的。为什么不言而喻,因为这些东西本来就需要一个载体。

子类很简单,就是通过传入的父对象和
attachedtext属性,寻找到当前系统的这个控件。
Class ClassJavaEdit
    Private m_JavaEdit    
    rem 根据父窗口和attachedText定义寻找实例
    Public function SetJavaEdit(parent,attachedtext)
        set    m_JavaEdit=parent.JavaEdit("attached text:="&attachedtext)
    End function    
    
    rem 只读属性:返回自身
    Public Property Get ItSelf
    set    ItSelf = m_JavaEdit
    End Property
End Class 

然后,就是调用了。调用很简单。在login window中的 user: 和 password: 框中输入密码。

rem 新建一个类 ,然后传入值user login ,创建这个对象窗口

Set testWindow=new ClassJavaWindow
testWindow.SetJavaWindow("User Login")
 
rem 定义用户名输入框,直接通过窗口类的方法创建对象。
Dim editUser
set editUser=testWindow.GetChildEdit("User:")

rem 定义密码输入框
Dim editPwd
set editPwd=testWindow.GetChildEdit("Password:")

rem 这个对象的ItSelf是货真价实的javaEdit。而且是user login的子控件,自然可以使用系统的set 方法用来设置值。
editUser.ItSelf.set "yinzihao"
editPwd.ItSelf.set "yzh" 

简化后的代码就是:

Set testWindow=new ClassJavaWindow
testWindow.SetJavaWindow("User Login")

testWindow.GetChildEdit("User:").ItSelf.set "yinzihao"

 testWindow.GetChildEdit("Password:").ItSelf.set "yzh"


才学了5天VB,对面向对象也不太熟悉,等我回去把重构再看一遍,参考一些其它的自动化测试框架。到时再慢慢架构一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值