声明:本空间的内容不全部是原创,如有雷同只为学习与借鉴之方便,别无它意,来者是朋友,愿通过此平台结交天下测试达狼!

发布新日志

  • 支付宝面试题(原创)

    2014-03-29 13:56:11

    1从字符串中分离" http://www.163.com/index.html"出“www.163.com”
     
    Dim a
    a="http://www.163.com/index.html"
    b=split (a, "/",-1,1)
    msgbox b(3)&" " &b(2)
    2 输入任意一个字符串然后把它倒序显示出来
     
    Dim str1,str2,str1l
    str1= InputBox("Enter a string","Enter your name:")
    MsgBox ("You entered: " & str1)
    str1l=len(str1)
    msgbox str1l-1
    reDim str2(str1l-1)
    Dim i
    i=str1l-1
    while(i>=0)
    str2(i)=mid(str1,str1l-i,1)
    i=i-1
    wend
    msgbox join (str2) ' gnij ieb ot  emoclew
  • vbscript 实现字符2种不同方式颠倒(原创)

    2013-05-21 13:43:40

    ''- - - - - -example 1 - - - -  - - 字符串按着字节颠倒
    Option Explicit
    Dim str1
    str1="welcome to beijing"
    Dim arry(3)
    arry(0)=right(str1,7)
    arry(1)=mid(str1,9,2)
    arry(2)=left(str1,7)
    msgbox join (arry) '  beijing to welcome
    '- - - - - - - - - - - - - - -  - - 按着字节颠倒
     
     
    - - - - - -example 2 - - - -  - - 字符串完全颠倒显示
    'Option Explicit
    Dim str1,str1l
    str1="welcome to beijing"
    str1l=len(str1)
    msgbox str1l-1
    'Dim str2(str1l-1)' such as define,will  report "Expected integer constant"
    reDim str2(str1l-1)
    Dim i
    i=str1l-1
    while(i>=0)
    str2(i)=mid(str1,str1l-i,1)
    i=i-1
    wend
    msgbox join (str2) ' gnij ieb ot  emoclew
    '- - - - - -example 2 - - - -  - - 字符串完全颠倒显示
  • QTP调用自己开发的.net类库

    2010-10-21 09:32:33

    1、 用VS2008编写个类
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace DemoCom
    {
        public interface IMyClass
        {
          
            int Add(int x, int y);
        }
        public class ComTest
        {
         
            public int Add(int x, int y)
            {
                if (x<0)
                {
                    x=0;
                }
               
                return x + y;
            }
        }
    }
    2、编译生成DemoCom.dll,保存至D盘
    3、QTP调用DemoCom.dll类文件中的Add(int x, int y)
    Set api= DotNetFactory.CreateInstance("DemoCom.ComTest","d:\DemoCom.dll")
    api.Add 10,10
    说明:DemoCom--名词空间
             ComTest---类名

    通过本例子,QTP调用NET动态库文件的方法


  • 自定义验证点-HTML模式

    2010-08-24 21:13:48

         很久没更新了,最近事情实在是太多,这两天稍微空点,终于能挤出时间来更新了,今天要讲的是自定义过程校验,内容比较特别,正常情况我们都知道,自定义报告的话我们可以直接使用Report对象,而当我们在使用验证点时经常会用到Checkproperty,执行它之后QTP会自动在report里生成一条验证结果。以上的我就不说了,相信大家一定都非常精通了。今天主要是讲一下怎么结合验证点在QTPreport中输出HTML格式的结果。

    废话不说,上例子:

     

    上图就是我们需要实现的最终结果。来看一下脚本的实现:

    1. 报告生成函数(过度函数)

    注意:这里的GetTOProperty("testObjName")是一个隐藏属性,可以获取QTP对象库里的对象的LOGICNAME.

    '#########################  报告生成  ###########################
    private Function HReport(ExpectedValue,ActualValue,testStatus,nodename)
        Set EventDesc = CreateObject("Scripting.Dictionary")
        '添加状态
        oEventDesc("Status") = micFail
        '添加是否过滤
        oEventDesc("EnableFilter") = False
        '添加节点名称
        oEventDesc("NodeName") = nodename
        '添加HTML结果
        oEventDesc("StepHtmlInfo") = "<TABLE border='1'>" & _
                    "<TR><TD>Actual Value</TD><TD>"+ExpectedValue+"</TD></TR>" & _
                    "<TR><TD>Expected Value</TD><TD>"+ActualValue+"</TD></TR>" & _
                    "<TR><TD>Checkpoint Status</TD><TD style='background-color:red'><b>Failed</b></TD></TR>" & _
                    "</TABLE>"
       '判断状态
        If testStatus Then
            oEventDesc("Status") = micPass
            oEventDesc("StepHtmlInfo") = Replace(oEventDesc("StepHtmlInfo"),_
            "<TD style='background-color:red'><b>Failed</b></TD>","<TD style='background-color:green'><b>Passed</b></TD>")
        End If
        '生成报告
        newEventContext = Reporter.LogEvent ("Replay",oEventDesc,Reporter.GetContext)
        '释放资源
        Set EventDesc = nothing
    End Function
     

    2. 验证函数 - 调用第一个报告生成函数自动判断成功与失败

    '########################### 自定义过程校验  ##########################
    Function ValidateProperty (Object, PropertyName, ExpectedValue)
        '判断预期是否与实际值相等
        If Object.GetROProperty(PropertyName) = ExpectedValue Then
            '成功
            HReport ExpectedValue,Object.GetROProperty(PropertyName),true,_
            "check "+Object.GetTOProperty("testObjName")+"<"+PropertyName+">属性"
            ValidateProperty = True
           Exit Function
        Else
          ' 失败
            HReport ExpectedValue,Object.GetROProperty(PropertyName),false,_
            "check "+Object.GetTOProperty("testObjName")+"<"+PropertyName+">属性"
            ValidateProperty = False
            Exit Function
        End If
    End Function
     

    这里的验证函数使用了测试对象的抽离技术。调用时可以直接把对象传入.

    把以上两个函数都存放在函数库中,然后直接调用验证函数(函数2)即可

    set WebEdit = Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("搜索框")

    ValidateProperty oWebEdit,"name","wd"
    ValidateProperty oWebEdit,"name","wd1"
     

    结果1: wd 验证成功,如图:

     

    结果2: wd1 验证失败,如图:

     

     

    本文来自CSDN博客:http://blog.csdn.net/zzxxbb112/archive/2010/06/18/5678204.aspx

  • [论坛] QTP 测试.net windows forms 遇到问题

    2010-07-26 10:42:15

    1 文本框先获得焦点,双击一个文本框然后弹出一个新窗体
    问题:录制完了,回放时会鼠标会停留在这里,鼠标点击下就过去
    2 点击某表格中(DataGridView)的某一列(DataGridViewLinkCell),
    如“选择”去选择一条数据
    问题:录制完了,回放时会鼠标会停留在这里,鼠标点击下就过去
    3 状态栏(StatusStrip)里的提示信(StatusLabel)息,比如登陆系统成功后,用户账号显示在状态栏
    问题:,想插入一个检查点去验证,不知道如何检查?
    备注,QTP 9.2 加载了.net +web插件

    [ 本帖最后由 haven6 于 2010-7-22 20:50 编辑 ]
  • 持续汇总QTP真实实践经验

    2010-07-26 08:31:56

    1、   脚本录制完了,一定要养成个检查下语法的习惯,会避免浪费一些不必要的时间

    2、   一般右键菜单打开时,加个wait函数或同步函数

    3、    一般菜单打开时,加个wait 函数或同步函数

    4、   检查点步骤前有很多情况需要加wait 函数或同步函数,可以减少无关的很多失败

    5、   应用程序任何不被QTP识别的区域或对象,检查时可以用位图检查(录制过程中添加),比如状态栏(StatusStrip)里的提示信(StatusLabel),比如登陆系统成功后,用户账号显示在状态栏.

    6、   添加检查点建议录制过程中添加,有些检查点录制停止状态下就不可以添加(目前还不知道为什么),比如文本区域检查点、同步检查点。

    7、   F11调试程序,在运行过程中有些文本框会或得焦点,这时候你手动去输入内容就没办法继续调试下去,解决办法:在脚本开始处+SystemUtil.BlockInput;在程序结尾处SystemUtil.UnblockInput。目的是在程序运行过程中禁止键盘鼠标操作。

    6、程序录制过程中,有些属性方法录制不下来,回放时会报general error Object is disable 等等,可以充分利用object by .net windows forms spy监控下,看看有哪些属性、方法。找到与回放时报错的方法,手动添加到脚本中去。真的可以解决很多问题。

     

  • Recovery Scenario实践

    2010-07-24 21:07:56

     

    具体实例

    1)有这样段脚本:Window("记事本").Activate
    Window("记事本").WinMenu("Menu").Select "文件(F);保存(S) Ctrl+S"
    Window("记事本").Activate
    Window("记事本").WinEditor("Edit").SetCaretPos 0,0
    Window("记事本").WinEditor("Edit").Type "31221"
    Window("记事本").WinEditor("Edit").Type  micReturn
    Window("记事本").WinEditor("Edit").Type "31sad"

    对象库中 添加了3个对象Window("记事本")‘WinMenu("Menu")、("Edit")
    2)用QTP打开这段脚本或复制进去,注意添加上面3个对象进对象库

    3)任意打开一个记事本并最小化,注意一定要“最小化”;

    4)开始运行脚本

    5)将会提示“Object not visible",并且会停止往下执行脚本

    接下来用Recovery Scenario的办法,让QTP 自动运行跳过这个错误继续执行脚本

    1)选择菜单 ”Resource|Resource Scenario Manager"

    2)在Scenarios 区域选择"New Scenario"图标按钮

    3)下一步

    4)选 Test run error

    5)下一步

    6)Error下拉列表中选择“Object not visible"或“any error”

    7)下一步

    8)选择Keyboard or mouse operation

    9)下一步

    10) 选择 Click default button/Press the ENTER key

    11) 下一步

    12) 取消Add another recovery operation复选框勾选,并点击“下一步”

    13)repeat current step and continue

    14)下一步

    15) 给场景命个名字

    16)点击save保存到一个地方

    17)用QTP 重新打开上面那段记事本脚本,并关联场景恢复脚本

    方法

    File|settings|recovery|Scenarions 中点击“+”去找到那个场景恢复脚本

    18)打开个记事本并最小化状态,并运行QTP

    ok看看运行结果,成功恢复过来了

     

  • 用Schedule定时运行QTP脚本

    2010-07-24 09:51:54

    创建一个.vbs,在控制面板的Schedule里面定义自己的task就好

    vbs的脚本如下:



    Dim qtApp 'As QuickTest.Application ' Declare the Application object variable

    Dim qtTest 'As QuickTest.Test ' Declare a Test object variable

    Dim qtResultsOpt 'As QuickTest.RunResultsOptions ' Declare a Run Results Options object variable

    Set qtApp = CreateObject("QuickTest.Application") ' Create the Application object

    qtApp.Launch ' Start QuickTest

    qtApp.Visible = True ' Make the QuickTest application visible

    ' Set QuickTest run options

    qtApp.Options.Run.ImageCaptureForTestResults = "OnError"

    qtApp.Options.Run.RunMode = "Fast"

    qtApp.Open "C:\ Your Test Path Here", True ' Open the test in read-only mode

    ' set run settings for the test

    Set qtTest = qtApp.Test

    qtTest.Settings.Run.OnError = "NextStep" ' Instruct QuickTest to perform. next step when error occurs

    Set qtResultsOpt = CreateObject("QuickTest.RunResultsOptions") ' Create the Run Results Options object

    qtResultsOpt.ResultsLocation = "C:\Your Results Path Here" ' Set the results location

    qtTest.Run ' Run the test

    'qtTest.Close ' Close the test

    Set qtResultsOpt = Nothing ' Release the Run Results Options object

    Set qtTest = Nothing ' Release the Test object

    Set qtApp = Nothing ' Release the Application object

    转自

    http://www.ltesting.net/html/87/n-154787.html

     

    备注:玩这个的关键有两个 1,添加计划任务时输入windows账号密码 2 启动windows 的task Schedule

  • 用Schedule定时运行QTP脚本

    2010-07-24 09:51:54

    创建一个.vbs,在控制面板的Schedule里面定义自己的task就好

    vbs的脚本如下:



    Dim qtApp 'As QuickTest.Application ' Declare the Application object variable

    Dim qtTest 'As QuickTest.Test ' Declare a Test object variable

    Dim qtResultsOpt 'As QuickTest.RunResultsOptions ' Declare a Run Results Options object variable

    Set qtApp = CreateObject("QuickTest.Application") ' Create the Application object

    qtApp.Launch ' Start QuickTest

    qtApp.Visible = True ' Make the QuickTest application visible

    ' Set QuickTest run options

    qtApp.Options.Run.ImageCaptureForTestResults = "OnError"

    qtApp.Options.Run.RunMode = "Fast"

    qtApp.Open "C:\ Your Test Path Here", True ' Open the test in read-only mode

    ' set run settings for the test

    Set qtTest = qtApp.Test

    qtTest.Settings.Run.OnError = "NextStep" ' Instruct QuickTest to perform. next step when error occurs

    Set qtResultsOpt = CreateObject("QuickTest.RunResultsOptions") ' Create the Run Results Options object

    qtResultsOpt.ResultsLocation = "C:\Your Results Path Here" ' Set the results location

    qtTest.Run ' Run the test

    'qtTest.Close ' Close the test

    Set qtResultsOpt = Nothing ' Release the Run Results Options object

    Set qtTest = Nothing ' Release the Test object

    Set qtApp = Nothing ' Release the Application object

    转自

    http://www.ltesting.net/html/87/n-154787.html

  • 讲解QTP脚本的封装和调用

    2010-07-24 09:42:44

    把QTP脚本封装起来,使其看起来一目了然!
      简单介绍一下方法:
      '启动飞机订票系统
      Sub flight()
      SystemUtil.Run "D:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\flight4a.exe","","D:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\","open"
      End Sub
      '登录
      Sub login()
      Dialog("Login").WinEdit("Agent Name:").Set "cff100"
      Dialog("Login").WinEdit("Password:").SetSecure "48dda077c740a7e3a91bdb8caff1f6fae5f02d1b"
      Dialog("Login").WinButton("OK").Click
      End Sub
      '插入订单
      Function insertorder()
      Window("Flight Reservation").ActiveX("MaskEdBox").Type "111111"
      Window("Flight Reservation").WinComboBox("Fly From:").Select "London"
      Window("Flight Reservation").WinComboBox("Fly To:").Select "Paris"
      Window("Flight Reservation").WinButton("FLIGHT").Click
      Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select "12538 LON 10:24 AM PAR 12:24 PM AF $162.40" 可以以数值代替如2
      Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
      Window("Flight Reservation").WinEdit("Name:").Set "cff100"
      Window("Flight Reservation").WinRadioButton("Business").Set
      Window("Flight Reservation").WinButton("Insert Order").Click
      Window("Flight Reservation").ActiveX("Threed Panel Control").WaitProperty "text", Insert Done..., 10000
      End Function
      '退出
      Sub logout()
      Window("Flight Reservation").Close
      End Sub
      其实就是把脚本按操作分段。然后以过程(SUB.....END SUB)或函数(FUNCTION ....END FUNCTION)进行封装。
      这样的脚本看上去一目了然,易理解也易于管理。
      QTP函数过程的调用
      以上面的QTP录制脚本的封装中的脚本为例:
      Call 过程名/函数名
      直接调用过程名/函数名
      也以飞机订票系统为例。调用上面封装的过程/函数:
      flight/call flight
      login/call login
      insertorder/Call insertorder
      logout/Call logout
      1. 调用SUB/FUNCTION方法是一样的……除了CALL调用如果有参数则需要使用括号将参数变量括起来。
      2. SUB与FUNCTION的区别:SUB过程是没有返回值的.但是FUNCTION是可以有返回值的。

    转自http://www.examda.com/soft/zhongji/pingce/20090619/111722995.html

  • 缺少对象 WScript 问题解决方法

    2010-07-23 14:00:18

    方法一
    先把脚本保存起来(保证你的脚本能正确运行),例如命名为test.vbs
    然后在QTP写以下脚本就可以正确运行了!
    Dim oShell
    Set oShell =CreateObject ("WSCript.shell")
    oShell.run "cmd /K wscript e:\test.vbs"
    Set oShell = Nothing

     方法二
    首先要明白 WScript.CreateObject 和 CreateObject 的区别。
     

    前者的描述方式是基于windows来识别和调用的,所以假如你在一个vbs文件里这么描述,然后双击执行这个文件是没有问题,因为windows存在Wscript这个对象,它遇到这个对象的时候会调用 C:\windows\system32\wscript.exe 这个 应用程序去执行它。 

    而后者则是不直接调用WScript这个对象来进行后期绑定WSH对象的。比如你在ASP中、QTP中,都必须用这个方式。因为ASP也好,QTP也好,里面都不存在WScript这个对象,所以你用WScript.CreateObject肯定会失败。 

    明白了这个原因,你就很清楚为什么要这么写,该怎么修改了。
     WScript.CreateObject 改为 CreateObject 问题就解决了!
     

  • QTP录制菜单(包含右键菜单)

    2010-07-21 21:32:34

    QTP如何鼠标右键菜单

    QTP附带的订票网站sample为例,edit控件username鼠标右键,点击paste(第4个菜单项)

    cur_replay_type = Setting.WebPackage("ReplayType")
    Setting.WebPackage("ReplayType") = 2
    Browser("Browser").Page("Welcome:  Tours").WebEdit("userName").Click 5,4, micRightBtn
    Setting.WebPackage("ReplayType") = cur_replay_type

    index=4
    Set WshShell = CreateObject("Wscrīpt.Shell")
    For i = 1 To index
        WshShell.sendKeys "{DOWN}"
    Next
    WshShell.sendKeys "{ENTER}"
    Set WshShell = nothing

    录制,比如打开记事本,点击下拉菜单 "文件"-->"退出";
    回放时会出现 object not visible ;
    windows("记事本").click 193,117
    windows("记事本").winmenu("ContextMenu").Select "文件:退出"

    QTP默认录制方式是无法录制下拉菜单的,必须修改设置后再录制
    修改设置如下:
    tools -> web event recording configuration 点击custom settings... 展开Web objects
    选种webelement,点击event -> add -> onmouseover 。并确定在record栏内,状态是enabled
    然后再重新录制你的脚本。
    执行录制后的脚本,无法回放成功,这是因为脚本只录制了鼠标的onmouseover 事件,却没有录制click
    件,所以脚本录制完后要手动添加click事件。

  • 一些公司的QTP编程面试题

    2010-07-20 22:24:35

    '  (1) 随便输入个数,求它的累加和,上海华诠科技
    '************************************************
    Function addmethod()
       Dim sum,i
       sum=0
       For i=1 to inputbox("enter your number") Step 1
    sum=sum+i
     Next
    print sum
    End Function
     addmethod()
    '  (2) 随便输入个数,求它的阶层  ,惠普(face-to-face的面试)
    '************************************************
    Function jiec()   '定义一个阶层函数
       Dim sum,i
       sum=1
       For i=1 to inputbox("enter your number") Step 1
    sum=sum*i
     Next
    print sum
    End Function
    jiec()


    '  (3)  用任何一种程序打印出一颗圣诞树,惠普(笔试),晕死,当时想用vbscript. 写出来,结果失败,改天调试出来
    '************************************************

  • QTP 调试时提示ActiceX部件不能创建对象

    2010-07-18 21:12:58

    用QTP运行下列脚本 提示:ActiceX部件不能创建对象

    Dim ExcelSheet
    Set ExcelSheet = CreateObject("Excel.Sheet")
    ' Make Excel visible through the Application object.
    ExcelSheet.Application.Visible = True
    ' Place some text in the first cell of the sheet.
    ExcelSheet.ActiveSheet.Cells(1,1).Value = "This is column A, row 1"
    ' Save the sheet.
    ExcelSheet.SaveAs "C:\DOCS\TEST.XLS"
    ' Close Excel with the Quit method on the Application object.
    ExcelSheet.Application.Quit
    ' Release the object variable.
    Set ExcelSheet = Nothing

    在网上找过几个方法

    1)把下列放入记事本,并把后缀改成bat格式

    rundll32.exe advpack.dll /DelNodeRunDLL32 %systemroot%\System32\dacui.dll

    rundll32.exe advpack.dll /DelNodeRunDLL32 %systemroot%\Catroot\icatalog.mdb
    regsvr32 /s comcat.dll
    regsvr32 /s asctrls.ocx
    regsvr32 /s oleaut32.dll
    regsvr32 /s shdocvw.dll /I
    regsvr32 /s shdocvw.dll
    regsvr32 /s browseui.dll
    regsvr32 /s browseui.dll /I
    regsvr32 /s msrating.dll
    regsvr32 /s mlang.dll
    regsvr32 /s hlink.dll
    regsvr32 /s mshtml.dll
    regsvr32 /s mshtmled.dll
    regsvr32 /s urlmon.dll
    regsvr32 /s plugin.ocx
    regsvr32 /s sendmail.dll
    regsvr32 /s mshtml.dll /i
    regsvr32 /s scrobj.dll
    regsvr32 /s corpol.dll
    regsvr32 /s jscript.dll
    regsvr32 /s msxml.dll
    regsvr32 /s imgutil.dll
    regsvr32 /s cryptext.dll
    regsvr32 /s inseng.dll
    regsvr32 /s iesetup.dll /i
    regsvr32 /s cryptdlg.dll
    regsvr32 /s actxprxy.dll
    regsvr32 /s dispex.dll
    regsvr32 /s occache.dll
    regsvr32 /s iepeers.dll
    regsvr32 /s urlmon.dll /i
    regsvr32 /s cdfview.dll
    regsvr32 /s webcheck.dll
    regsvr32 /s mobsync.dll
    regsvr32 /s pngfilt.dll
    regsvr32 /s licmgr10.dll
    regsvr32 /s hhctrl.ocx
    regsvr32 /s inetcfg.dll
    regsvr32 /s trialoc.dll
    regsvr32 /s tdc.ocx
    regsvr32 /s MSR2C.DLL
    regsvr32 /s msident.dll
    regsvr32 /s msieftp.dll
    regsvr32 /s xmsconf.ocx
    regsvr32 /s ils.dll
    regsvr32 /s msoeacct.dll
    regsvr32 /s wab32.dll
    regsvr32 /s wabimp.dll
    regsvr32 /s wabfind.dll
    regsvr32 /s oemiglib.dll
    regsvr32 /s directdb.dll
    regsvr32 /s inetcomm.dll
    regsvr32 /s msoe.dll
    regsvr32 /s oeimport.dll
    regsvr32 /s msdxm.ocx
    regsvr32 /s dxmasf.dll
    regsvr32 /s laprxy.dll
    regsvr32 /s l3codecx.ax
    regsvr32 /s acelpdec.ax
    regsvr32 /s mpg4ds32.ax
    regsvr32 /s danim.dll
    regsvr32 /s Daxctle.ocx
    regsvr32 /s lmrt.dll
    regsvr32 /s datime.dll
    regsvr32 /s dxtrans.dll
    regsvr32 /s dxtmsft.dll
    regsvr32 /s wshom.ocx
    regsvr32 /s wshext.dll
    regsvr32 /s vbscript.dll
    regsvr32 /s scrrun.dll mstinit.exe /setup
    regsvr32 /s msnsspc.dll /SspcCreateSspiReg
    regsvr32 /s msapsspc.dll /SspcCreateSspiReg
    echo.
    echo.

    2)运行regsvr32 scrrun.dll

    3)IE-工具-选项-安全-自定义级别-启用所有ActiceX控件或插件

    都不管用, 哪位高人有更好方法?

  • QTP使用过程中遇到的问题及常用方法

    2010-07-11 19:44:48

    QTP使用过程中遇到的问题及常用方法   转自:http://chjuan1122.blog.163.com/blog/static/12289203201001595849815/

    默认分类 2010-01-15 09:58:49 阅读135 评论0 字号:

    QTP使用过程中遇到的问题及常用方法
    1、Action Screen  页面显示乱码问题
    工具->Internet 选项->高级  最后一行复选框去掉(总是以UTF-8发送URL(需要重启动));

    2、自动完成代码
    设置语言栏的快捷键(CTRL+P)与QTP快捷键相同

    3、解决下拉列表无法录制的方法

    设置WebElenment的事件名称、临听、记录 分别为:onclick  Always  Enabled;onmouseout  If Handler Enabled;onmouseover If Handler Enabled;

    4、解决下拉框回放无法通过的方法
    删除选择下拉菜单的下一行Click该行代码


    5、QTP启动程序的方法
    1.SystemUtil.Run 允许启动新的进程
    格式:SystemUtil.Run file, [params], [dir], [op], [mode]

    2.InvokeApplication 启动应用程序
    格式:InvokeApplication(Command [,StartIn])

    3.COM - Wsh
    利用Wsh对象进行启动
    Dim oShell
    set Shell= CreateObject ("Wscript.shell") 
      oShell.Run "IEXPLORE.EXE" 
      Set Shell = Nothing 

    4.通过设置

    5.打开运行对话框

    6、解决上传附件无法回放的方法
    如果文件框可以输入,可直接输入绝对路径,如果不能输入,请开发人员默认一个文件如:d:\test.txt


    7、选择下拉列表、下拉框的值,回放有问题
    删除选择下拉列表、下拉框代码的下一行CLICK代码即可

  • 下拉框里面的webelement无法实现click(解决办法)

    2010-07-10 15:08:40

    下拉框里面的webelement无法实现click转自http://bbs.51testing.com/thread-271729-1-2.html


    现在有个页面的下拉框通过识别并不是weblist形式的,点击下拉框会展开下拉菜单,通过object spy发现下拉菜单里面的元素是webelement,所有元素又可以通过webtable的GetCellData方法得到,出现的问题就是我通过Browser("....").Page("....").WebTable("....").ChildItem(2,1,"WebElement",0).Click,也就是想点击下拉框的第2行第1列数据,回放脚本时该webelement未被click,有谁也碰到过类似的问题么?请问该怎么解决?

    即使我把下拉框中单个的webelement添加到对象库,然后通过Browser("...").Page("...").WebElement("...").Click,问题仍然存在...

    解决办法:

    使用低端录制模式


    使用低端录制模式试一下呢?  保证IE在最大化状态,使那个webelement显示在页面中固定位置,再使用低端录制模式点击这个webelement的相对坐标。
  • qtp 问题汇总

    2010-07-09 21:33:24

     
    一、Cannot find the "shoujian.projectname" object's parent "10_2" (class Frame). Verify that parent properties match an object currently displayed in your application.问题的解决。
    这个问题真是郁闷,其实产生的主要原因是在录制脚本的时候,qtp没有识别出来框架Frame中的对象,回放时找不到对象出错。
    解决办法:通过object spy 识别对象 并将其添加到对象库;然后在录制点击对象的一段脚本(或者自己写),再次回放就ok了。

    二、注意:datatable.Importsheet "D:\test\USER_INFO.xls",1,"Action1" 中,"Action1"一定要加双引号,要不然默认导入到Global中。

    三、自动启动qtp的vbscript脚本。
    dim qtapp
    Set qtapp=createobject("QuickTest.application")
    qtapp.Launch
    qtapp.visible=true
    用法:将脚本卸载记事本文件中,文件格式保存为.vbs 点击直接运行。就可以自动启动qtp。

    四、描述性编程中出现“The “[WinEdit]”object's description ,matches more than one of the objects currently displayed in your appliction.Add addtional properties to the objects ddescription in order to uniquely identify the object.”中问题的解决。
       这个问题看起来其实很简单就是在QTP描述过程中,发现匹配该对象的属性多于1个,因此无法正确匹配,所以QTP报错。错误如图下:
    qtp <wbr>问题汇总(不断更新)<一>

    问题解决方法:
    添加更多的对象属性,以便正确匹配,在对象查看器点击该对象(我的是password对象),点击qtp <wbr>问题汇总(不断更新)<一>,查看对象的属性,添加更多的属性,如:window id 等。同时将脚本修改为:
    Dialog("Login").WinEdit("attached text:=Password:","window id:=3001").Set "cheers_lee"
    注意红色字体部分,我是同个两个属性匹配WinEdit的,一个是attached text另一个是window id。再次运行脚本,测试通过OK!强调的是attached text和window id 是对象的属性,通过对象查看器可以看到。

    五、修改QTP中对象的默认识别属性

    WebCheckBox为例。
    QTP里面 ,选择Tools --> Object Identification...Environment选择Web,找到  WebCheckBox,看看 QTP默认的识别WebCheckBox 对象时使用的是哪些属性。可以修改识别WebCheckBox对象属性
    注意: 修改只对以后录制的脚本起作用。

    六、QTP如何测试鼠标右键菜单

    QTP附带的订票网站sample为例,edit控件username鼠标右键,点击paste(第4个菜单项)

    cur_replay_type = Setting.WebPackage("ReplayType")
    Setting.WebPackage("ReplayType") = 2
    Browser("Browser").Page("Welcome: Mercury Tours").WebEdit("userName").Click 5,4, micRightBtn
    Setting.WebPackage("ReplayType") = cur_replay_type

    index=4
    Set WshShell = CreateObject("Wscrīpt.Shell")
    For i = 1 To index
        WshShell.sendKeys "{DOWN}"
    Next
    WshShell.sendKeys "{ENTER}"
    Set WshShell = nothing
     

    七、如何设置让对象库不产生重复对象

    tools --options---web ---page/frame. optinons
    都选择第二项.就OK了.
     

    八、QTP中用代码连接数据库

    Set Conn = CreateObject("ADODB.Connection" )
    str="DRIVER=Oracle in OraHome92;SERVER=192.168.0.1;DBQ=testdb;user id=test; password=test"
    Conn.open str
    Set Rs = CreateObject ("ADODB.Recordset" )
    sql = "select * from user_table t where table_name = 'XXX' "
    Rs.open sql,conn',1,3
     

    九、QTP测试页面字体颜色的办法

    set ōbj = Browser().Page().WebElement().Object
    ' Get the  object
    set iStyle= obj.currentstyle
    ' Get the attribute
    sColor = iStyle.color
     

    十、下拉菜单不能回放的解决方法

    在录制时,比如打开记事本,点击下拉菜单 "文件"-->"退出";
    回放时会出现 object not visible ;
    windows("记事本").click 193,117
    windows("记事本").winmenu("ContextMenu").Select "文件:退出"

    QTP默认录制方式是无法录制下拉菜单的,必须修改设置后再录制
    修改设置如下:
    在tools -> web event recording configuration 点击custom settings... 展开Web objects,
    选种webelement,点击event -> add -> onmouseover 。并确定在record栏内,状态是enabled。
    然后再重新录制你的脚本。
    执行录制后的脚本,无法回放成功,这是因为脚本只录制了鼠标的onmouseover 事件,却没有录制click事
    件,所以脚本录制完后要手动添加click事件。
     

    十一、QTP中如何识别带参数的链接?

    QTP中如何识别带参数的链接?比如:"Browser("browser").Page("page").Link("href:=http://www.xxx.test/file/upload.php?matchable=0"

    特殊字符都需要用转义字符"\"来进行转义。

    十二、如何让QTP运行时自动产生提示信息并自动确定?

    Set WshShell = CreateObject("Wscrīpt.Shell")
           WshShell.Popup "123456789", 2, "标题内容"
     

    十三、QTP回放的过程中出现禁止运行控件提示的解决方法

    修改QTP设置如下:toos-->options..-->Active Screen-->Advanced-->点选Load ActiveX controls
     

    十四、从QC自动启动qtp如何自动加载插件

    '此函数用于加载指定Test所有的插件,若要运行Test可自己加个qtApp.Test.Run
    Function Load_Addins(testPath)
            Dim qtApp 'As QuickTest.Application
            Dim blnNeedChangeAddins
            Dim arrTestAddins
            Set qtApp = CreateObject("QuickTest.Application")
            arrTestAddins = qtApp.GetAssociatedAddinsForTest(testPath)
            blnNeedChangeAddins = False
            For Each testAddin In arrTestAddins
                If qtApp.Addins(testAddin).Status <> "Active" Then
                    blnNeedChangeAddins = True
                    Exit For
                End If
            Next
            If qtApp.Launched And blnNeedChangeAddins Then
                 qtApp.Quit
            End If
            If blnNeedChangeAddins Then
                Dim blnActivateOK
                blnActivateOK = qtApp.SetActiveAddins(arrTestAddins, errorDescrīption)
                If Not blnActivateOK Then
                    Call ErrorLog(errorDescrīption)  '这里是调用自己的日志函数,可替换为自己的或注释掉
                      Wscrīpt.Quit
                End If
            End If
            If Not qtApp.Launched Then
                qtApp.Launch
            End If
            qtApp.Visible = True
            qtApp.Open testPath
    '可在此加入qtApp.Test.Run来运行Test
            Set qtApp = Nothing
    End Function

  • [论坛] BPT框架问题(QTP高手请指点)

    2010-06-03 15:19:21

    最近研究《QTP与QC组合--业务组件案例.ppt》碰到问题
    测试计划——新建测试—选择测试类型为:Businesses Process,测试脚本中为测试计划添加业务组件。
    我根本没办法选择到测试类型为:Businesses Process,
    ,TEST Type列表包含了以下类型:
    MAUAL
    WR-AUTOMATED
    VAPI-TEST
    LR-SCENAIO
    QUICTEST_TEST
    ALT-SCENAIO
    VAPI-XP-TEST
    SYSTEM-TEST
    就是无:Businesses Process类型,所以也就没有办法组织业务流程,
    已经安装了BPT插件
    环境是:QPT92+QC9.0+BPT

    [ 本帖最后由 haven6 于 2010-6-3 15:19 编辑 ]

    QTP与QC组合--业务组件案例.ppt
    (2010-06-03 15:19:11, Size: 387 KB, Downloads: 0)

  • 软件测试工具QTP的几种同步等待方法

    2010-05-18 17:24:15

    在编写脚本时,经常要考虑到2个步骤之间的时间间隔问题,例如,1. 打开www.baidu.com2. 输入avepoint。 由于网速的不同,打开百度网页之后会有一定的延迟,所以1,2两步之间要有一个短时间的等待,可以通过以下几种方法实现:

      1. 对象的默认等待时间。

      QTP识别对象时,会有一个默认的等待时间,可以在File-->Settings-->Run-->Object synchronization中设置,默认时间是20秒,也就是说当执行到第2步时,网页还没有完全打开,这样的话QTP找不到第2步中需要的对象,那么它会在20秒内不断的尝试查找对象,如果百度这个网页在20秒之内完全打开,那么这个方法就可行(网页全部打开的话,第2步所需的对象就会被找到),如果超过20秒还不行的话,请参考下面几种方式

      2. 使用.Sync方法。

      还是打开百度,输入Avepoint,可用如下代码来实现

      Browser("Browser").Navigatehttp://www.baidu.com

      Browser("Browser").Page("百度").Sync

      Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").Set "Avepoint"

      第2句的意思就是等待百度这个页面完全打开,才继续执行下面操作。

      3. QTP系统自带的同步点功能

      第2种方法只能在Web中使用,那么如果其他类型的对象需要等待时间怎么办?可以使用QTP系统自带的同步点功能。

      还是上面的例子,在录制状态下,选择Insert-->Synchronization Point,选择要同步的对象,设置要同步的属性,我们可以对对象的Enable,visible一类表示状态的属性做同步点,生成如下脚本

      Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").WaitProperty "visible", True, 100000

      这句话的意思就是在100秒的时间内,等待WebEdit这个对象的visible属性,只要它的visible属性变为true,那么就执行下面操作,最后的100000单位是毫秒,如果在100000毫秒(100秒)后还没有等到visible = true,直接执行下面操作。

      4. 利用VBS语句。

      Do until Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").Exist(5)

      Wait(1)

      Loop

      判断WebEdite这个对象是否出现,如果没有出现,执行Wait(1),如果出现,跳出循环。

      5. 死等大法。

      就是用Wait()语句设置等待时间,死等,比如Wait(10),就是脚本停止10秒,任何操作都不做,10秒之后继续往下执行操作。

  • QTP9用Object Spy查看页面对象时,都显示为WinObject类型了?

    2010-05-18 16:42:39

     
    我的QTP在录制和识别Web对象时,都只能识别到Windows标准控件,无法识别Web对象。折腾了很久,今天终于发现,IE的加载项中,把QTP用来识别Web元素的控件给禁用了,启用后正常。
    工具->管理加载项
    internet选项(属性)->程序->管理加载项->启动BHOManager Class:
     
321/212>
Open Toolbar