发布新日志

  • QTP中的同步等待方式

    2013-03-19 10:36:44

      在自动化测试中,往往会遇到这样一种情况,当点击了一个链接或按钮之后,脚本马上报错,说是没有找到对象。这其实不是对象不存在的问题,而是在脚本中没有增加同步点。在一些Web网站中,当点击了链接或按钮后经常会跳转到一个新的页面,而这个页面需要一定的加载时间,但这个时候QTP已经执行下一行语句了,在这个页面还没有加载完的情况下就去寻找下一步需要操作的对象,那自然是会出错的了。因此,我在这里总结了几种同步方式。


    1. QTP设置中的默认等待时间

            通过QTP菜单在File --> Settings --> Run 选项中进行设置,如图所示。

            设置了对象同步超时时间后,QTP在运行脚本时会根据对象的属性去搜索这个对象,如果超出了所设的时间仍未找到对象,才会认为此对象不存在。


    2. Wait

            wait函数的语法结构非常简单,只需在后面加一个时间参数即可。

            使用方法:

    Wait 5
    Browser().Page().Link().Click

            以上代码的意思是先等待5秒再点击某个链接,在这5秒中QTP会暂时停止执行脚本。


    3. Exist

            Exist后也可以像wait一样加时间参数,不过Exist会根据对象的属性判定对象是否存在。

            使用方法:

    With Browser().Page().Link()
        If .Exist(5) Then
            .Click
        End If
    End With

            这里要注意不能直接使用object.Exist(timeout)来同步,因为Exist属性是有一个布尔返回值的,需要配合条件语句。


    4. Sync

            Sync方法是Web中最常用的同步方法,适用于Browser对象和Page对象,作用是自动等待页面完成加载。

            使用方法:

    Browser().Page().Sync


    5. WaitProperty

            WaitPorperty ( PropertyName, PropertyValue, [TimeOut] )

            WaitProperty方法的作用是在TimeOut的时间内等待对象的属性值,如果在规定时间内出现了属性值则执行下一步,否则继续等直到超时。这种方法是我个人比较推荐的一种方法,既稳定又灵活。

            使用方法:

    With Browser().Page().Link()
        If .WaitProperty("text", "登录", 5) Then
            .Click
        End If
    End With

            需要注意的是WaitProperty与Exist一样,都是有返回值的,所以需要与条件语句搭配。

    6.激活窗口AppActive

    set Wshell=CreateObject(Wscript.Shell)
    oWshell.run "notepad"
    while not oWshell.AppActive("无标题-记事本"):Wend
    oWshell.SendKeys "zzzzdddd"
    set Wshell=nothing

  • QTP CreatObject 大全

    2012-06-27 11:39:18

    ADO对象
    Connection
    Command
    RecordSet
    Record
    Stream


    Server.CreateObject(
    "Scripting.FileSystemObject")
    Server.CreateObject(
    "Scripting.Dictionary")   HashTable
    Server.CreateXObject(
    "Word.Application")    //Server
    ActiveXObject(
    "Word.Application")    //Client
    Server.CreateObject(
    "Excel.Application")   //Server
    ActiveXObject(
    "Excel.Application")    //Client
    CreateObject("PowerPoint.Application")
    Server.CreateObject(
    "Microsoft.XMLHTTP")
    Server.CreateObject(
    "Microsoft.XMLDOM")
    Server.CreateObject(
    "MSXML2.XMLHTTP.4.0")
    Server.CreateObject(
    "WScript.Shell")
    Server.CreateObject(
    "wscript.network"
    Server.CreateObject(
    "MSWC.AdRotator")
    CreateObject("Excel.Sheet")
    MS FrontPage: oFP 
    = CreateObject("FrontPage.Application")
    MS Access: oAccess 
    = CreateObject("Access.Application")
    MS Graph: oGraph 
    = CreateObject("MSGraph.Application")


    CreateObject("PhotoShop.Application")

    CreateObject("SQLDMO.SQLServer")
    CreateObject("SQLDMO.Login")
    CreateObject("SQLDMO.Backup")
    CreateObject("SQLDMO.User")
    Server.CreateObject(
    "SQLDMO.BackupDevice")
    Server.CreateObject(
    "SQLDMO.Database")
    Server.CreateObject(
    "SQLDMO.Restore")

    Server.CreateObject(
    "MSMQ.MSMQQueueInfo")
    CreateObject("MSMQ.MSMQQuery")
    Server.CreateObject(
    "ixsso.Query")
    Server.CreateObject(
    "ixsso.Util")

    AccPac Advantage Corporate: 
    oAccPac
    =CreateObject("ACCPAC.xapiSession")

    AccPac Report Master 
    for Windows: 
    oImpApp
    =CreateObject("Impromptu.Application.30")

    BarTender: 
    oBarTender 
    = CreateObject("BarTender.Application")

    CrystalReports: 
    oCRApplication 
    = createobject ("CrystalRuntime.Application"
    This doesn
    't invoke an IDE actually.

    EUDORA: 
    oEud 
    = CreateObject("Eudora.EuApplication.1")

    FaxMaker: 
    oFax 
    = CREATEOBJECT("fmfaxapi.application")

    GroupWise:
    oGroupWise 
    = CreateObject("NovellGroupWareSession")

    LotusNotes: 
    oNotes 
    = CreateObject("Notes.NotesSession")
    oNotes 
    = CreateObject("Notes.NotesUIWorkspace")
    oNotes 
    = CreateObject("Lotus.Notessession") (Domino 5.0.3)

    MS Common Dialog: 
    oCommmonDialog 
    = CreateObject("MSComDlg.CommonDialog"&& !!! You can't directly create this object without a development licence, so for dynamically doing it on another machine, see below. -- PeterCrabtree

    MS Internet Explorer: 
    oIE 
    = CreateObject("InternetExplorer.Application"
    IEAutomationExample

    MS MapPoint:
    oMapPoint 
    = CreateObject("MapPoint.Application")

    MSN Messenger:
    oMessenger 
    = CREATEOBJECT("MSNMessenger.MessengerApp")

    MS NetMeeting:
    oNetMeeting
    =CREATEOBJECT("netmeeting.app.1")

    MS Outlook: 
    oOutlook 
    = CreateObject("Outlook.Application")

    MS Outlook Express: None 
    - It is not a COM server!

    MS PowerPoint: 
    oPP 
    = CreateObject("PowerPoint.Application")

    MS Project: 
    oProj 
    = CreateObject("msProject.Application")

    MS SourceSafe: 
    oVSS 
    = CreateObject("SourceSafe.0")

    MS Word: 
    oWord 
    = CreateObject("Word.Application")

    MS Visio: 
    oVisio 
    = CreateObject("Visio.Application")


    MS VisualCPlusPlus: (VC
    ++)
    oCpp 
    = CreateObject("MSDev.Application")

    MS VisualFoxpro: 
    oVFP 
    = CreateObject("VisualFoxPro.Application")

    MS WindowsScriptingHost: 
    oWSH 
    = CreateObject("WScript.Shell"

    Novell GroupWise: 
    oGroupWise 
    = CreateObject("NovellGroupWareSession")

    PCAnywhere (host): 
    oPCAHost 
    = CreateObject("WinAWSvr.BeHostDataManager")

    PCAnywhere (remote): 
    oPCARem 
    = CreateObject("WinAWSvr.RemoteDataManager")

    QuickBooks: 
    QBSessionManager 
    = CreateObject("QBFC2.QBSessionManager")

    RationalRose: 
    oRose 
    = CreateObject("Rose.Application")

    TAPIFax: 
    oTAPIFax 
    = CreateObject('FaxServer.FaxServer')

    WindowsShell: 
    oWSH 
    = CreateObject("Shell.Application")

    Windows Media Player: 

    oWMP 
    = CREATEOBJECT("WMPlayer.OCX")
    oPlayList 
    = oWmp.PlaylistCollection.GetAll()
    oWmp.currentPlaylist 
    = oPlayList.Item(0&& Zero based array
    *!* Music starts!

    Windows Messenger: 
    oMessenger 
    = CREATEOBJECT("Messenger.MessengerApp")

    WinFax: 
    oWinFax 
    = CreateObject("WinFax.SDKSend"

    WinPrint : 
    oWinPrint 
    = CreateObject("WinPrint.WinPrintX")

    SQL
    -DMO object
    loSQL 
    = CREATEOBJECT("SQLDMO.Application")

    Others:

    Scripting Shell: 
    oShell 
    = CreateObject("WScript.Shell")

    Scripting Network 
    Object
    oNet 
    = CreateObject("WScript.Network")

    Scripting Regular Expression Parser: 
    oReg 
    = CreateObject("VBScript.RegExp")

    SQL DMO SQL Server: 
    CreateObject("SQLDMO.SQLServer")

     
Open Toolbar