第一篇:面向对象试行QTP

前言:最近从开发转到了自动测试,反正正在实习,有大把的时间。所以也乐于转型。而且,我还碰到了我的公司中的老师,亲爱的秦哥哥。但愿这一年的实习期能让我真正的掌握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,对面向对象也不太熟悉,等我回去把重构再看一遍,参考一些其它的自动化测试框架。到时再慢慢架构一下。

猜你喜欢

转载自blog.csdn.net/yzh900927/article/details/19705695