发布新日志

  • [论坛] [ QTP ] QTP学习总结

    2007-11-06 14:56:09

    如果你已经订完了飞机票,可能不知道下一步该怎么走,我把自己的一些理解写下来,希望大家能够有所帮助

    一.理解对象的识别(什么是QTP的对象?所有我们要操作的东东都可以称为对象,Browser、WebEdit等等都是)
            1.描述性编程识别对象
                    描述性编程有多种用法,一种如下所示
                            Browser("CreationTime:=0").Page("index:=1").WebEdit("name:=" & edit).Set "ha"
                            (这种方法我没怎么用过,个人感觉不如直接使用对象库方便)
                    另一种用法,如下面的函数是用来选中所有的选项框的
                            Public function SelectAllCheckBox()
                                    '创建满足下面三条属性的对象(即WebCheckBox对象)
                                    Set NewObject = Descrīption.Create
                                    NewObject("micclass").value ="WebCheckBox"
                                    NewObject("html tag").value="INPUT"
                                    NewObject("class").value = "checkBox_class"
                                   
                                    'Page页面下的所有的满足上面条件的WebCheckBox的集合
                                    Set NewObjects = Browser("Browser").Page("page").ChildObjects(NewObject)
                                    '统计WebCheckBox的数目
                                    Numbers = NewObjects.Count
                                   
                                    For i = 0 to NewObjects.count - 1
                                            '将每一个WebCheckBox对象选中
                                            NewObjects(i).Set "ON"
                                    Next
                            End Function
                            大家可跟据这种模式进行其他的各种操作
                    其他的用法我也不了解了~~
            2.对象库识别对象
                    对象库大家肯定在用了,但是要注意的问题:
                    (1).会用高亮显示查看对象库中的对象在实际中对应的位置。
                    (2).如何在对象库中使用正则表达式?(选中那个Regular Expression就可以用了)
                    (3).在录制过或添加对象时,同样的对象却添加了个 _2 的新对象,怎么办?(Tools=>Option=>Web=>Page/Frame ōption=>全选Different Test Object Descrīptions,以及Tools=>Object Identification里的设置要与对象库里的对象一致)
                    (4).共享对象库的使用。对象库以xml导出导入。
            个人理解:描述性编程是对象库的补充,它们识别对象的机制是一样的,实际应用应当以对象库为主,描述性为辅(像选中所有选项框的那个函数用对象库就难以实现)
    二、学习正则表达式
            用多少学多少吧,我觉得不需要刻意去学,够用就行了~
    三、函数化封装与调用
            如何加载外部文件?(1.File=>Setting=>Resources可加载.vbs、.qfl、.txt的文件,加载后在Resource=>Associate Function Liberaries下面可以打开查看 2.ExecuteFile "..\..\Libraries\Enviroment.vbs"的模式)
            使用Function或Sub或Class封装一些操作,设置参数,进行调用。(最近在研究使用Class,呵呵)
    四、数据驱动
            Excel中的数据导入导出。在帮助里输入DataTable,所有的知识在那里都可查到。(不知道这算不算数据驱动)
    五、到了这里我想就应该拿出时间来把QTP仔细研究一下了,把它所有的菜单下面的条目都看一下,结合着帮助,至少也要知道他们各自是干什么的。
            1.了解相对路径的知识。为了脚本的可移置性,相对路径是要懂得的。
            2.怎样设置运行速度啊,错误处理啊,各种加载的东东啊~~
    六、框架。
            现在应该对QTP有了一个大致的把握了吧,可能已经跃跃欲试想做个实际的项目了,但是一旦应用起来,问题又来了:如何实现最大的可重用性、可扩展性和可维护性?这时候就要进行一些取舍,参考论坛上的一些框架的讨论,有的舍弃了对象库,用描述性编程Excel关键字驱动(像梦醒十分的框架),有的保留对象库进行多层模式设计。这方面我的做法是使用对象库,分为三层模式进行设计脚本。
    七、写一些通用的函数。
            这时,如果对QTP的Reporter不满意了,可能要自己写个WriteLog()函数将结果写到.log或Excel文件里去。写一些处理xml、excel,连接数据库的通用的函数,积累一些常用的方法,如        SystemUtil.CloseProcessByName("iexplore.exe")、SystemUtil.Run "iexplore.exe",URL、DeskTop.CaptureBitmap ...等等等等
    八、后来,你可能觉得根据项目的需要,QTP许多工作做不了,于是,可能需要学习Windows API,可能学习编写dll库文件...学习一些与QTP没有关系的知识,还可能自己编写一些小程序让QTP调用。这时,你会明白,QTP只不过是一个工具而已~~

    我自己学习QTP也才三四个月吧,还有很多的知识需要学习,如果我的理解有错误,还请给我指出来,谢谢!
  • [ 网海拾贝 ] 面朝大海,春暖花开

    2007-10-30 16:33:18

    面朝大海,春暖花开

                ----海子

    从明天起,做一个幸福的人
    喂马,劈柴,周游世界
    从明天起,关心粮食和蔬菜
    我有一所房子,面朝大海,春暖花开

    从明天起,和每一个亲人通信
    告诉他们我的幸福
    那幸福的闪电告诉我的
    我将告诉每一个人

    给每一条河每一座山取一个温暖的名字
    陌生人,我也为你祝福
    愿你有一个灿烂的前程
    愿你有情人终成眷属
    愿你在尘世获的幸福
    我也愿面朝大海,春暖花开
  • [论坛] [ QTP ] 使用类来解决函数化时"可选参数"问题

    2007-10-19 14:21:46

    在做函数化时,同时会对一些值进行参数化,以备后面调用。如Function AddNew(NewName,NewAge)这样。
    记得曾经在51上看到有讨论函数是否可以有可选参数的问题,结果好像是不能设置可选参数。
    在项目中也遇到过需要可选参数的情况。

    今天刚刚读了songfang大虾的《在QTP中如何使用Class(类)》,忽然想到可以用类来解决这个问题嘛,于是立马写了出来试试
    比如要建立一个Customer用户,他的许多创建时的参数的不同值会对后面有不同的影响,所以要对众参数中的某一个做一些修改
    于是有了以下测试代码
    Class AddNew
            Dim para1,para2,para3

            Sub Class_Initialize
                    para1 = 1
                    para2 = 2
                    para3 = 3       
            End Sub

            Sub setPara1(byval para)
                    para1 = para
            End Sub

            Sub setPara2(byval para)
                    para2 = para
            End Sub

            Sub DoAdd()
                    msgbox "para1=[" & para1 & "] para2=[" & para2 & "] para3=[" & para3 & "]"
            End Sub
           
    End Class

    Set Customer = new AddNew
    Customer.DoAdd()
    Customer.setPara1(111)
    Customer.DoAdd()
    Customer.setPara2(222)
    Customer.DoAdd()
    Set Customer = nothing

    这样就应该可以解决这个问题了吧
    刚刚想到这里,难免有些稚嫩,希望大虾们指点
  • [ QTP ] QTP连接到SQL Server 2000数据库

    2007-08-30 13:19:58

    Set Conn = CreateObject("ADODB.Connection")

    Set Rs = CreateObject("ADODB.Recordset")

    Conn.Open "Descrīption=Descrīption;DRIVER=SQL Server;SERVER=Automatetest;UID=sa;PWD=sa;APP=QuickTest Professional;WSID=KML-MICHELLE;DATABASE=MYDB"
    //不知道Descrīption用处在哪,可以更改而不影响结果
    //需要注意的参数:SERVER;UID;PWD;DATABASE

    sql="select * from DataTable"

    Rs.open sql,Conn

    msgbox Rs("FieldA"),,"FieldA"
    //Rs("FieldA")为FieldA列的第一个值
    //要取第N行的值应该怎么样做?

    Conn.close

    set Conn=nothing
  • [ 网海拾贝 ] 生命中最重要的事

    2007-08-10 13:20:35

      一天,时间管理专家为一群商学院学生讲课。他现场做了演示,给学生们留下一生难以磨灭的印象。站在那些高智商高学历的学生前面,他说:“我们来个小测验”,拿出一个一加仑的广口瓶放在他面前的桌上。随后,他取出一堆拳头大小的石块,仔细地一块块放进玻璃瓶里。直到石块高出瓶口,再也放不下了,他问道:“瓶子满了吗?”所有学生应道:“满了”。时间管理专家反问:“真的?”他伸手从桌下拿出一桶砾石,倒了一些进去,并敲击玻璃瓶壁使砾石填满下面石块的间隙。“现在瓶子满了吗?”他第二次问道。
      
      但这一次学生有些明白了,“可能还没有”,一位学生应道。“很好!”专家说。他伸手从桌下拿出一桶沙子,开始慢慢倒进玻璃瓶。沙子填满了石块和砾石的所有间隙。他又一次问学生:“瓶子满了吗?”“没满!”学生们大声说。他再一次说:“很好。”然后他拿过一壶水倒进玻璃瓶直到水面与瓶口平。抬头看着学生,问道:“这个例子说明什么?”一个心急的学生举手发言:“它告诉我们:无论你的时间表多么紧凑,如果你确实努力,你可以做更多的事!”。“不!”,时间管理专家说,“那不是它真正的意思。这个例子告诉我们:如果你不是先放大石块,那你就再也不能把它放进瓶子里。那么,什么是你生命中的大石块呢,与你爱人共度时光,你的信仰,教育,梦想,或是和我一样,教育指导其他人?切切记得先去处理这些‘大石块’,否则,一辈子你都不能做到。”
      
      同样的空间,放置东西的先后顺序不同,结局就大相径庭;同样的时间,工作安排的顺序不同,结果也千差万别。最重要的“大石块”一定要排在第一位。
      
      朋友,当你可以看得动懂这个故事的时候,你就应该认真的想一想, 什么会是你生命中的“大石块”呢?那么你一定要记得先把它放进的你的瓶子里。

我的栏目

数据统计

  • 访问量: 4060
  • 日志数: 5
  • 建立时间: 2007-08-10
  • 更新时间: 2007-11-06

RSS订阅

Open Toolbar