发布新日志

  • 网上收集的QTP小技巧

    2008-10-20 12:33:47

    目录

    1.      测试登陆是否正确... 2

    2.      QTP调用Win API 3

    3.      QTPexcel中写入内容... 4

    4.      读取 Excel表格数据... 4

    5.      QTP运行后锁键盘和鼠标。... 5

    6.      使用 Extern.Declare Extern.<已声明的方法> 方法更改记事本窗口的标题。... 5

    7.      QTP 自动截图... 6

    8.      自动化运行QuickTest. 6

    9.      共享点映射到本地... 9

    10.        移除共享映射... 10

    11.        QTP中的调用命令... 11

    12.        QTP编程自动获得网页中的javascrīpt代码和完整的html代码... 12

    13.        对系统文件的操作... 13

     

     

     

     

    1.      测试登陆是否正确

     

    Reporter.ReportEvent micDone, "Login", "开始登陆操作"

    Dialog("Login").Activate

    Dialog("Login").Check CheckPoint("Login")

    'RunAction "Action_help", oneIteration

    Dialog("Login").WinEdit("Agent Name:").Set DataTable("UserID", dtGlobalSheet)

    Dialog("Login").WinEdit("Password:").SetSecure DataTable("Password", dtGlobalSheet)

    Dialog("Login").WinButton("OK").Click

    If  Dialog("Login").Dialog("Flight Reservations").Exist Then

            Dialog("Login").Dialog("Flight Reservations").Activate

            Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click

            Reporter.ReportEvent micDone, "Login", "登陆失败"

            Dialog("Login").Activate

            Dialog("Login").Close

    else

             Reporter.ReportEvent micDone, "Login", "完成登陆操作"

            If Window("Flight Reservation").Exist  Then

                     Window("Flight Reservation").Activate

                     Window("Flight Reservation").Close

                    Reporter.ReportEvent micDone, "Login", "退出"

            End If

    End If

     

     

    脚本应该是没什么问题

    但是如果你要测试“登录”功能

    这个用例仅能测正确的用户名和正确的密码是否能够登录

    逻辑上还缺少登录错误的情况:用户名不存在,密码错误

    另外日志登录成功失败都是done状态,文字区分用例的结束状态不明显

     

    要有针对性的设计用例,比如:

    用户名 密码 预期结果

    正确 正确 登录成功

    不存在 无所谓 用户名不存在

    正确 错误 密码错误

     

    这样来设计就不会有遗漏了,最好是datatable三行数据,预期结果也放入

    日志里成功用micPass,失败用micFail

     

    NS250X测试登录窗口是否存在例子

     wait 5

     

    If  Browser("Browser").Dialog("Connect to 192.168.5.183").Exist Then

            Browser("Browser").Dialog("Connect to 192.168.5.183").WinEdit("User name:").Set "admin"

    Browser("Browser").Dialog("Connect to 192.168.5.183").WinEdit("User name:").Type  micTab

    Browser("Browser").Dialog("Connect to 192.168.5.183").WinEdit("Password:").SetSecure "48d89a4e62f25dbfea0fa154853e"

    Browser("Browser").Dialog("Connect to 192.168.5.183").WinButton("OK").Click

           

            Reporter.ReportEvent micDone, "Login", "登陆成功"

          

    else

              Reporter.ReportEvent micDone, "Login", "登陆失败"

     

    end if

     

    2.      QTP调用Win API

    Extern.Declare micLong, "WinExec", "kernel32.dll", "WinExec", micString,micLong

    Extern.WinExec "d:\1.exe", 1

     

    3.      QTPexcel中写入内容

     filename="D:\xyb\xueyb\xueyb.xls"

         ' create the Excel object

    Set ExcelObj = CreateObject("Excel.Application")

    ExcelObj.Workbooks.Add

    Set NewSheet = ExcelObj.Sheets.Item(1)

    NewSheet.Name = "Page Information"

    row = 1

    NewSheet.Cells(1,1) = "name"

    NewSheet.Cells(1,2) = "xueyb"

    NewSheet.Columns("A:A").ColumnWidth = 20

    NewSheet.Columns("A:A").Font.Bold = True

    NewSheet.Columns("B:B").ColumnWidth = 60

    NewSheet.Columns("B:B").HorizontalAlignment = -4108 ' xlCenter

    ' save the Excel file

    ExcelObj.ActiveWorkbook.SaveAs filename

    ExcelObj.Quit

    Set ExcelObj = Nothing

     

     

    4.      读取 Excel表格数据 

     

     

    Option explicit

    Dim srcData,srcDoc,i,j

    set srcData = CreateObject("Excel.Application")

    srcData.Visible = true

    set srcDoc = srcData.Worksheets("Sheet1").Activate

        Dim myarray(7,4),temp

        Dim str

    For i=2 to 7

        For j=1 to 4

        myarray(i,j)= srcDoc.Worksheets("Sheet1").Cells(i,j).value

    Select Case j

        Case "1"

    查看(790) 评论(1) 收藏 分享 管理

  • 转贴:手工编写QTP测试脚本

    2008-05-11 20:26:52

    手工编写QTP测试脚本

    在上一篇《管理QTP测试脚本的对象仓库》中,我们讨论了如何建立一个结

    构化的,易于维护的对象仓库系统。我们这样做不仅仅是为了维护方便,更

    重要的一点,当我们有了一套结构清楚的对象仓库以后,我们就可以轻松的

    手工编写QTP脚本了。
    这里可能有人会问,QTP的录制功能不是很强大么,为什么还要自己手写脚

    本,这样是不是更麻烦。我先说一下我对手写测试脚本的感受,供大家参考

    。首先,如果我们整理好对象仓库,再录制脚本,QTP就会又自动生成一批

    新的对象,命名很乱,再修改替换太费事;其次,录制脚本的过程如果出现

    问题,再重来,很麻烦;最后,也是最重要的,手写脚本时思路非常清楚,

    而且写完再运行,感觉非常好,呵呵。
    与编写脚本相比,脚本的维护工作同样很重要,而且维护脚本一般都是直接

    修改脚本,并不会去重新录制,所以开始的时候就用手写的方式,维护起来

    就会更轻松。
    编写QTP脚本其实是比较简单、快速的。我们首先创建一个Test,然后把所

    有相关对象仓库的tsr文件和vbs文件添加到这个Test里面,下面就可以开始

    写了。写脚本大致会遇到这么几种情况:
    1、调用vbs函数
    2、调用其他Test
    3、打开指定的URL
    4、操作页面Page上的控件
    5、添加CheckPoint
    6、其他逻辑运算
    我们分别讲一下。调用vbs函数比较简单,直接Call [函数名]。如果要调用

    其他的Test,那么首先点击Call to Existing Test,然后在QC中选择一个

    可以复用的Test,例如登录。如果登录的Test有参数,那么可以这样写:
    RunAction “Action1 [login]”, oneIteration , “张三”
    下面的脚本要操作对象仓库了。我们先写出“Browser(”,这时就会发现,对

    象仓库里面的Browser对象都列了出来,然后我们选择需要的那个B对象就好

    。我们先从打开指定URL的脚本开始讲,打开指定的URL使用的机会比较多,

    特别是在Test的开始。一般我们这样写
    Browser(”登录”).Navigate “指定的URL”
    这里的“登录”是一个Browser对象,一般我们要选业务上符合的B对象。写完

    这句以后要再写:
    Browser(”登录”).Page(”登录首页”).Sync
    这句的意思是等待“登录首页”这个Page加载完毕,注意不要用Wait几秒这种

    方式来等待页面加载结束。
    操作Page的对象是比较简单的,由于控件的类型太多,比如下拉菜单

    WebList、文本输入框WebEdit、按钮WebButton,这里就不一一说明了,大

    家看下面的一些例子吧:
    Browser(”购买直充”).Page(”购买直充”).WebList(”游戏区”).Select 1
    Browser(”购买直充”).Page(”购买直充”).WebEdit(”PlayerName”).Set

    “abc”
    Browser(”购买直充”).Page(”购买直充”).WebEdit(”

    PlayerNameAgain”).Set “abc”
    Browser(”购买直充”).Page(”购买直充”).WebEdit(”CheckCode”).Set

    “8888″
    Browser(”购买直充”).Page(”购买直充”).Image(”Submit”).Click
    如果遇到问题,不知道怎么写,可以先用录制的方式,生成一些脚本,然后

    仿照脚本写就可以了。另外在Page下面有可能会有Frame对象,这个没关系

    ,就像这样写即可:
    Browser(”我的直充”).Page(”我的直充”).Frame(”直充入口”).Image(”立即

    直充”).Click
    添加CheckPoint要稍微复杂一些,比如说我们要检查Page上的一个

    WebElement的显示字符是否正确,那么首选要把这个WebElement完整的写在

    Test里面,这一句后面需要删除:
    Browser(”购买直充”).Page(”购买直充”).WebElement(”购买结果”).Click
    然后右击这一行脚本,选择Insert Standard CheckPoint,在弹出的CP属性

    窗口,设置CP的细节。确认后脚本就会自动生成一行:
    Browser(”购买直充”).Page(”购买直充”).WebElement(”购买结果”).Check

    CheckPoint(”购买结果”)
    最后再把上面那一行删除就可以了。
    其他的逻辑运算,例如循环、判断,请参考vbs脚本语法,这里不说了。
    总之,手动编写QTP脚本有很多好处,我在尝试了录制和手写两种方式之后

    ,最终选择了手写的方式,大家不妨也试试,特别是对编码有兴趣的同学。

    地址:http://www.51testing.com/?55427/action_viewspace_itemid_77665.html

  • 映射驱动器和拷贝文件夹的VBS

    2007-12-19 13:29:18

    映射驱动器:
    Set WshNetwork = CreateObject("Wscrīpt.Network")
    WshNetwork.MapNetworkDrive  "z:","\\10.0.0.208\1","1","1"

    删除驱动器:
    Dim WshNetwork
    Set WshNetwork = CreateObject("Wscrīpt.Network")
    WshNetwork.RemoveNetworkDrive "Z:", "true","true"

    拷贝文件夹:
    Const ōverWriteFiles = True
    Set ōbjFSO = CreateObject("scrīpting.FileSystemObject")
    objFSO.CopyFolder "C:\pcnet" , "Z:\" ,OverWriteFiles

    删除文件夹
    Set ōbjFSO = CreateObject("scrīpting.FileSystemObject")
    objFSO.DeleteFolder("Z:\pcnet")


Open Toolbar