岁月沧桑,物是人非,岁月赋予了我什么:财富?知识?皱纹?生活态度?

发布新日志

  • 关于QTP10 R6025 Runtime Error

    2012-09-19 14:37:19

    错误对话框提示信息:

    错误对话框:
    Microsoft Visual C++ Runtime Library

    Runtime Error!
    Program: c:\Program Files\HP\QuickTest Professional\bin\QTPro.exe

    R6025
    -pure virtual function call

     

    解决方法:安装HP补丁,下载附件

  • 给不可编辑的控件赋值

    2012-08-29 17:06:56

    解决方法:修改目标编辑框的属性为readOnly=false,然后再执行set操作
    qtp脚本实例:


    Function common_set_readonlyedit(obj_input,mes_input)
       Set bj=obj_input.Object
       old_set=obj.readOnly
       if old_set=true then
          obj.readOnly=false
          obj_input.set mes_input
          obj.readOnly=old_set
       else
        obj_input.set mes_input
       end if
    End Function


    ruby脚本实例:


    def common_set_readonlyedit(obj,mes_input)
       old_set=obj.readOnly
       if old_set==true
          obj.readOnly=false
          obj.value=mes_input
          obj.readOnly=old_set
       else
        obj.value=mes_input
       end
    end

  • QTP自动发送邮件

    2012-06-28 09:21:24

    在QTP中可以outlook 和 cdonts发送邮件,但是使用Outlook 需要在运行QTP的点脑安装Outlook,而且发送时要打开Outlook还会出现一个对话框,要求点击确认,无法实现真正的自动发送,所以本人还是推荐使用CDONTS来发送邮件。

     

    CDONTS EMail是IIS提供的组件。使用这个组件有两个前提:

    1. 系统安装并启动了SMTP服务

    2. CDONTS.dll被注册到系统中(系统默认没有注册这个组件,从网上该组件并RegSvr32命令注册即可)

      CDONTS安装方法:
      Step1: 将该文件拷贝至 %SystemRoot%//System32 下;
      Step2: 开始 -> 运行 -> Regsvr32 cdonts.dll; 
      Step3: 确认

    然后输入脚本

    Function SendMail(SendTo, Subject, Body, Attachment)
        Set l=CreateObject("Outlook.Application")
        Set Mail=ol.CreateItem(0)
        Mail.to=SendTo
        Mail.Subject=Subject
        Mail.Body=Body
        If (Attachment <> "") Then
            Mail.Attachments.Add(Attachment)
        End If
        Mail.Send
        ol.Quit
        Set Mail = Nothing
        Set l = Nothing
    End Function

    ' Example 2
    Function SendMail(SendFrom, SendTo, Subject, Body)
        Set bjMail=CreateObject("CDONTS.Newmail")
        ObjMail.From = SendFrom
        ObjMail.To = SendTo
        ObjMail.Subject = Subject
        ObjMail.Body = Body
        ObjMail.Send
        Set bjMail = Nothing
    End Function

    调用脚本 SendMail  "aa@aa.com", "bb@bb.com","Test","Testbody"

    执行脚本,检查邮箱是否收到邮件

     

    如果邮件顺利收到固然很好,而且这个流程网上也有很多,我也无需再此多说一遍,但是很多时候,事与愿违,并不能顺利收到邮件,经过一步步地分析推理,发现其中更有玄机,这才是我最想分享给大家的:

    如果收不到邮件,需要到IIS,SMTP虚拟邮件服务器的属性里面去看一下,安全是否加了允许匿名访问,或者加了来宾用户。

    另外到默认的邮件路径下,看一下C:/Inetpub/mailroot/Queue里面是否有违发送的邮件,如果有稍等一下,看是否消失,如果消失;然后再到C:/Inetpub/mailroot//Badmail 查看你的邮件是否还留在此文件夹下,如果有则说明发送失败了。 然后再给mairoot文件夹的访问权限增大,允许普通用户操作。

     一切操作完成,再次运行脚本,邮件就可以发送成功。

     

  • JRE环境配置及启动Selenium测试服务器

    2012-06-13 13:57:08

    一、Java Runtime Environment (JRE)下载地址:

        http://www.oracle.com/technetwork/indexes/downloads/index.html

    二、配置环境变量

        具体操作:右击我的电脑--属性--高级--环境变量--找到系统变量--新建

        1.变量名=JAVA_HOME
          变量值=D:\Program Files\Java\jre7 
        2.变量名=PATH(已经有了的话在后面追加,记得前面加个';')
          变量值=%JAVA_HOME%\bin
        3.变量名=CLASSPATH
          变量值=.;%JAVA_HOME%\lib
         (这里的'.;'不能少哦)

    三、启动Selenium测试服务器

        打开cmd 进入selenium-server-1.0-beta-2目录,输入“java -jar selenium-server.jar”(需要先安装JRE),启动Selenium
    测试服务器。

  • QTP 提取系统时间的脚本

    2012-03-14 10:19:47

    function GetDateTime()

                    Dim Currentdatetime

                    Dim YY   'Year

                    Dim MM   'Month

                    Dim DD   'Day

                    Dim HH 'Hour

                    Dim Min  'MInute

                    Dim SS   'Second

                    Dim Nowstr

                    Currentdatetime=now()

                    YY=Year(Currentdatetime)

                    MM=Month(Currentdatetime)

                    If MM<10 Then

                                    MM="0"&MM

                    End If

                    DD=Day(Currentdatetime)

                    If DD<10 Then

                                    DD="0"&DD

                    End If

                    HH=Hour(Currentdatetime)

                    If HH<10 Then

                                    HH="0"& HH

                    End If

                    Min=Minute(Currentdatetime)

                    If Min<10 Then

                                    Min="0"&Min

                    End If

                    SS=Second(Currentdatetime)

                    If SS<10 Then

                                    SS="0"&SS

                    End If

                    Nowstr=MM & DD & YY & HH & Min & SS

                    GetDateTime=Nowstr

    end function

  • QTP从数据库中导出数据

    2012-03-13 16:41:27

    1.QTP从数据库中导出数据到excel中
    Set bjExcel = createobject("Excel.Application")
    xlsUrl = "C:\aa.xls"
    objExcel.Workbooks.Open(xlsUrl)
    Set sheetNew = objExcel.Sheets.Item(1)  '把数据库中的内容保存到excel的sheet1表中
    Set conn = CreateObject("adodb.connection")
    set res = createobject("adodb.recordset")
    conn.Open "Provider=SQLOLEDB.1;Password=Password01!;Persist Security Info=True;User ID=sa;Initial Catalog=PCRM2;Data Source=ws-gisgtssts-03\paypaltestserver"
    strSql = "select * from RoleBase"
    res.Open strSql,conn,1,1
    Dim i
    i = 1
    While not res.EOF
        roleID = res("RoleId").value
        name1 = res("Name").value
        IsDeleted = res("IsDeleted").value
        sheetNew.cells(i + 1,1).value = roleID  '从excel表中的第2行开始
        sheetNew.cells(i + 1,2).value = name1
        sheetNew.cells(i + 1,3).value = IsDeleted
        i = i + 1
        res.MoveNext
    Wend
     objExcel.ActiveWorkbook.Save
     objExcel.Quit
     Set bjExcel = nothing
     res.Close
     Set res = nothing
    2.QTP从数据库中导出数据到DataTable中
    Set conn = CreateObject("adodb.connection")
    set res = createobject("adodb.recordset")
    conn.Open "Provider=SQLOLEDB.1;Password=Password01!;Persist Security Info=True;User ID=sa;Initial Catalog=PCRM2;Data Source=ws-gisgtssts-03\paypaltestserver"
    strSql = "select * from RoleBase"
    res.Open strSql,conn,1,1
    Dim i
    i = 1
    While not res.EOF
        roleID = res("RoleId").value
        name1 = res("Name").value
        IsDeleted = res("IsDeleted").value
        DataTable.LocalSheet.GetParameter("RoleId").ValueByRow(i) = roleID
        DataTable.LocalSheet.GetParameter("Name").ValueByRow(i) = name1
        DataTable.LocalSheet.GetParameter("IsDeleted").ValueByRow(i) = IsDeleted
        i = i + 1
        res.MoveNext
    Wend
     res.Close
     Set res = nothing
     
  • rs.recordcount为什么返回值总是 -1

    2011-09-02 15:00:53

    解决方法:

    rs.cursorlocation = 3   

    rs.open sql,conn,3,1

    解释:rs.open sql,conn,3,1。这句中两个参数分别表示游标类型和锁定类型。

    游标类型:

    Const adOpenForwardOnly = 0
    前向游标,为缺省游标,提供最快的运行性能。用它打开recordset,从对至尾顺序取得所有结果。它不支持向后滚动,只允许在结果间单向移动。
    Const adOpenKeyset = 1
    静态游标,反映第一次打开游标时表中数据的状态,游标无法查明底层表中的数据行是否更新过、删除过或添加了新的数据。不过与只能前移的洲标不同,静态游标可以在结果间前后滚动。
    Const adOpenDynamic = 2
    键盘驱动的游标,可以查询表中底层数据行的某些变化,但不是全部。它特别是可以准确反映数据是否更新过。但它不能查明其它用户是否曾删除过数据行(删除掉的数据行在recordset中会留下空洞)。键盘驱动的游标支持在结果间前后滚动。
    Const adOpenStatic = 3
    动态游标,是最丰富的游标类型。游标打开时可以查询其他用户对表的任何改动,而且支持滚动。

    锁定类型?

    Const adLockReadOnly = 1
    缺省的上锁类型,只读方式上锁允许多个用户同时读取同样的数据,但不能改变数据。
    Const adLockPessimistic = 2
    以悲观上锁方式打开数据对象。该方式假定在你编辑记录时会有其它用户访问数据。此时一旦你开始编辑记录,其它用户就不能访问该数据。
    Const adLockOptimistic = 3
    以乐观上锁方式打开数据对象。该方式假定在你编辑记录时不会有其它用户访问数据。在完成改变之前,其它用户不能访问该记录。
    Const adLockBatchOptimistic = 4
    执行多行批处理更新时使用这种类型

    那么rs.cursorlocation = 3又是什么意思呢?就是代表使用客户端光标,也就是rs.CursorLocation = adUseClient。对应的是 rs.CursorLocation = adUseServer 服务端光标。

    看看下面更详细的解释:

    CursorLocation 属性
        设置或返回游标服务的位置。
         设置和返回值
         设置或返回可设置为以下某个常量的长整型值。
    常量 说明
    adUseNone 没有使用游标服务。(该常量已过时并且只为了向后兼容才出现)。
    adUseClient 使用由本地游标库提供的客户端游标。本地游标服务通常允许使用的许多功能可能是驱动程序提供的游标无法使用的,因此使用该设置对于那些将要启用的功能是有 好处的。AdUseClient 具有向后兼容性,也支持同义的 adUseClientBatch。
    adUseServer 默认值。使用数据提供者的或驱动程序提供的游标。这些游标有时非常灵活,对于其他用户对数据源所作的更改具有额外的敏感性。但是,Microsoft Client Cursor Provider(如已断开关联的记录集)的某些功能无法由服务器端游标模拟,通过该设置将无法使用这些功能。


    说明
    该属性允许在可用于提供者的各种游标库中进行选择。通常,可以选择使用客户端游标库或位于服务器上的某个游标库。
    该属性设置仅对属性已经设置后才建立的连接有影响。更改 CursorLocation 属性不会影响现有的连接。
    对于 Connection 或关闭的 Recordset 该属性为读/写,而对打开的 Recordset 该属性为只读。
    由 Execute 方法返回的游标继承该设置。Recordset 将自动从与之关联的连接中继承该设置。
    远程数据服务用法 当用于客户端 (ADOR) Recordset 或 Connection 对象时,只能将 CursorLocation 属性设置为 adUseClient。

  • QTP模拟键盘事件的键值

    2011-08-15 16:11:41

    键值对照

     键   代码
     BACKSPACE  {BACKSPACE}、{BS}{BKSP}
     BREAK  {BREAK}
     CAPS LOCK  {CAPSLOCK}
     DELDELETE  {DELETE}{DEL}
     DOWN ARROW(下箭头键)  {DOWN}
     END  {END}
     ENTER  {ENTER}~
     ESC  {ESC}
     HELP  {HELP}
     HOME  {HOME}
     INSINSERT  {INSERT}{INS}
     LEFT ARROW(左箭头键)  {LEFT}
     NUM LOCK  {NUMLOCK}
     PAGE DOWN  {PGDN}
     PAGE  UP  {PGUP}
     PRINT SCREEN  {PRTSC}(保留,以备将来使用)
     RIGHT ARROW(右箭头键) {RIGHT}
     SCROLL LOCK  {SCROLLLOCK}
     TAB  {TAB}
     UP  ARROW(上箭头键)  {UP}
     F1  {F1}
     F2  {F2}
     F3  {F3}
     F4  {F4}
     F5  {F5}
     F6  {F6}
     F7  {F7}
     F8  {F8}
     F9  {F9}
     F10  {F10}
     F11  {F11}
     F12  {F12}
     F13  {F13}
     F14  {F14}
     F15  {F15}
     F16  {F16}
     数字键盘加号  {ADD}
     数字键盘减号  {SUBTRACT}
     数字键盘乘号  {MULTIPLY}
     数字键盘除号  {DIVIDE}

    要指定与SHIFT、CTRLALT键的任意组合一起使用的键,请在这些键代码之前加上以下一个或多个代码: 

       代码
     SHIFT  +
     CTRL  ^
     ALT  %
     
     

  • VbListView对象里的checkbox回放的时候没法选上

    2011-08-11 11:19:03

    问题现象:

    vblistview前的checkbox回放的时候没法选上,SetItemState方法不能执行,如下:VbWindow("frmMain").VbWindow("frmEmergency").VbListView("LVStudents").SetItemState "student002", micChecked

     

    解决方法:

    将录制成的脚本语句修改成使用他的Object属性,调用他运行时对象的内部方法实现

    1.VbWindow("frmMain").VbWindow("frmEmergency").VbListView("LVStudents").Object.ListItems.Item(index).checked=true

    2.VbWindow("frmMain").VbWindow("frmEmergency").VbListView("LVStudents").Select 1

    VbWindow("frmMain").VbWindow("frmEmergency").VbListView("LVStudents").Object.SelectedItem.Checked=true

    3.键盘事件:程序必须支持空格键(或者其它键)勾选复选框

     set WshShell =CreateObject("WScript.Shell")
     VbWindow("frmMain").VbWindow("frmEmergency").VbListView("LVStudents").Select "student002"
     WshShell.SendKeys " "

  • VB控件调用右键菜单的鼠标事件无法录制

    2011-08-09 15:08:29

  • QTP模拟鼠标和键盘事件方法

    2011-08-08 14:07:58

    1、鼠标事件

      1.1 使用自带的Click方法
      看QTP的帮助,每个对象都有自带的Click方法,通过其中第三个参数指定具体的鼠标事件
      例如:
      Browser("New Page").page("New Page").WebElement("html tag:=Form").Click
      0,0,micRightBtn
      注意Click方法的前两个参数是相对坐标,即相对于对象控件左上角的坐标。
      然而执行脚本时常常发现右键功能无法回放。这需要通过设置回放级别解决。例如:
      Setting.WebPackage("ReplayType") = 2
      Browser("New Page").page("New Page").WebElement("html tag:=Form").Click
      0,0,micRightBtn
      Setting.WebPackage("ReplayType") = 1

         index=4
         Set WshShell = CreateObject("Wscrīpt.Shell")
         For i = 1 To index
           WshShell.sendKeys "{DOWN}"
         Next
         WshShell.sendKeys "{ENTER}"
         Set WshShell = nothing
      1.2 使用自带的FireEvent方法
      具体使用参考QTP的帮助吧,需要提醒一下,右键菜单的弹出对应的是"oncontextmenu"事件,这个帮助里没有提到,当然依赖于开发的代码实现。
      1.3 使用mercury.devicereplay
      Set devReplay = CreateObject("mercury.devicereplay")
      devReplay.MouseClick absx+4,absy+4,2
      1.4 使用Windows底层的mouse_event
      如果上面的方法仍然不管用,就要采用更底层的方法了。不过这种方式不推荐,因为mouse_event识别的是绝对坐标,你还需要在调用 mouse_event前获取对象的绝对坐标。需要说明的是,如果没有使用MOUSEEVENTF_ABSOLUTE,函数默认的是相对于鼠标当前位置的点,用0,0表示,会被认为是当前鼠标所在的点。
      Extern.Declare micVoid, "mouse_event", "user32.dll", "mouse_event", micByte,micByte,micDWord,micULong
      Extern.mouse_event MOUSEEVENTF_RIGHTDOWN,0,0,0

    2、键盘事件
      2.1 SendKeys
      最常用的模拟键盘操作的事件就是SendKeys了,具体说明一样参考QTP的帮助。
      需要说明的是QTP帮助中的例子,需要做一些调整,QTP中执行不需要显示指定Wscrīpt执行shell命令,否则会报错。正确的例子(先打开大些开启的灯,3秒后自动关闭,非常形象的例子)如下:
      

       Set WshShell = CreateObject("Wscript.Shell") '这里要特别注意不能写成Wscrīpt.Shell,否则会报“ActiveX 部件不能创建对象: 'Wscrīpt.Shell'”错误。
        WshShell.SendKeys "{CAPSLOCK}"
        wait 3
        WshShell.SendKeys "{CAPSLOCK}"

            当然我们也可以先定义一个function,然后每次都调用这个function。

     

     Public Function sendKeys(stringWord)
     Dim WSH
        On Error Resume Next
        Set WSH = CreateObject("WScript.Shell")
        WSH.SendKeys stringWord
        Set WSH =
    Nothing
    End Function


    sendKeys ("{CAPSLOCK}") '这里注意括号中的写法
    wait 3
    sendKeys ("{CAPSLOCK}") '这里注意括号中的写法

     

      2.2 Mercury.DeviceReplay
      Set devReplay = CreateObject("mercury.devicereplay")
      devReplay.SendString("a")
      2.3 使用Windows底层的keybd_event
      Extern.Declare micVoid, "keybd_event", "user32.dll", "keybd_event", micByte,micByte,micDWord,micULong
      Extern.keybd_event 42,0,0,0
      注意一下这里的第一个参数是10进制的。
      SendKeys的使用要方便一点,但是稳定性不如后者,
      Function RtClick( Obj )
      absx = Obj.GetROProperty("abs_x")
      absy = Obj.GetROProperty("abs_y")
      Set devReplay = CreateObject("mercury.devicereplay")

        devReplay.MouseClick absx+4,absy+4,2
      set devReplay = nothing
      End Function

  • SQLSERVER和ORACLE数据库连接代码

    2011-05-30 10:29:22

    1Oracle数据库

    要求在客户端机器上安装了oracle客户端并已配置完成

    代码:

    Set Conn = CreateObject("ADODB.CONNECTION")
    StrCon = "Provider=OraOLEDB.Oracle.1;Persist Security Info=True;" &_

    "User ID=xxx;Password=xxx;Data Source=xxxx;"

    Conn.Open StrCon

     

    SqlStr = "select number from table"
    Set Res = CreateObject("ADODB.RecordSet")
    Res.Open SqlStr,Conn,1,1

     

     

    2sqlserver数据库

    Dim rs,conn,sqlstr,strcon

    strcon = "Provider=SQLOLEDB.1;User ID=sa;Password=xxxx;"&_
    "Data source=10.10.7.11;DATABASE=qcsiteadmin_db"

     

    Set conn = createobject("adodb.connection")

    conn.open strconn

    sqlstr="select * from td.SESSIONS_HISTORY where USER_NAME = '"_
    Set rs=createobject("adodb.recordset")
    rs.open sqlstr,conn,1,1

     

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

    2011-05-25 10:49:42

    set iDisplay = Browser().Page().WebElement().Object
    ' Get the currentstyle. object
    set iDisplayStyle. = iDisplay.currentstyle
    ' Access the Display attribute
    sTmp = ""
    sTmp = iDisplayStyle.color


  • 编辑框WebFile无法set的解决方法

    2011-05-20 10:01:52

    QTP脚本WebFile对象无法set的解决方法:

    Browser(“taobao”).Page(”Taobao-CRM_2″).Frame(”mainFrame_3″).WebFile(”editor_image”).click

    Browser(“taobao”).Dialog(”选择文件“).WinEdit(”文件名(N):”).Set “F:\document\图片\da4b4633-5e6c-4dfa-a38f-5d4e800856d5.jpg

    Browser(“taobao”).Dialog(”选择文件“).WinButton(”打开(O)”).Click

      无法使用set是因为对应对话框被定为不可以赋值方式进行编写;但qtp录制时候还是按赋值录制没有录制弹出窗口这个操作,这时候我们要自己写弹出窗口语句来模拟操作,解决的三句代码就是模拟操作:1.点击按钮;2.在弹出的dialog输入文件名;3.点击确认选择按钮

  • QTP破解失败:Failed to add license code "UNKNOWN"...

    2011-05-11 11:51:44

    安装许可证密钥失败。
    Error[19]:Failed to add license code "UNKNOWN" to the license server on host "no-net".

    这个问题是在远程安装QTP时出现,并且利用“哔”的方法填写license,这个license是单机版的,所以解放方法也很简单,到需要安装QTP的机器上去进行本机安装,不要使用远程桌面。

    同理,远程无法打开QTP.exe,所以说,无法进行远程桌面的环境下打开QTP。

  • SystemUtil详解

    2011-05-10 13:57:31

    一、  列出systemutil这个对象内部的所有属性和方法:
    1.Run
       运行一个文件或应用程序

    2.BlockInput
       禁止鼠标和键盘操作

    3.UnBlockInput
       一般跟在BlockInput语句之后,解除对键盘和鼠标的禁止。

    4.CloseDescendentProcesses
       关闭由QTP打开的所有进程。

    5.CloseProcessByHwnd
       根据窗口句柄,找到相应过程,关闭程序。

    6.CloseProcessById
       根据进程 ID (PID)关闭某个进程。

    7.CloseProcessByName
       根据名称关闭某个进程。

    8.CloseProcessByWndTitle
       关闭所有进程,这些进程是具有指定标题的窗口的所有者。

    二、  属性方法详解
    1.    object.Run file, [params], [dir], [op], [mode]
    参数        描述
     
    objet       类型 SystemUtil 的测试对象。
     
    file        必填. String 值。要运行的文件的名称。
     
    params      可选. String 值。如果指定的 file 参数是可执行文件,

                请使用 params 参数指定要传递给应用程序的任意参数。
     
    dir         可选. String 值。应用程序或文件的默认目录。
     
    op          可选. String 值。要执行的操作。如果此参数为空 (""),

                将执行“打开”操作。可以为 op 参数指定以下操作:

    操 作  描述
    打 开 打开由 FileName 参数指定的文件。文件可以是可执行文件、文档文件或文件夹。不可执行的文件将在关联的应用程序中打开。
    编 辑 启动编辑器,并打开文件以供编辑。如果 FileName 参数指定的是一个不可编辑的文档文件,语句将失败。
    浏 览 浏览由 FileName 参数指定的文件夹。
    查 找 指示从指定的文件夹路径开始搜索。
    打 印 打印由 FileName 参数指定的文档文件。如果指定的文件不是可打印的文档文件,语句将失败。

      
     
    mode
     可选. Integer 值。 指定应用程序打开时的显示模式。可以指定如下表所示的模式之一:默认值 = 1

     模式  描述
     0 隐藏该窗口,并激活另一个窗口。
     1 激活并显示该窗口。如果该窗口已被最小化或最大化,系统将把它还原到原始大小和位置。首次显示该窗口时指定此标志。
     2 激活该窗口并将其最小化。
     3 激活该窗口并将其最大化。
     4 以最近一次打开时的大小和位置显示该窗口。活动窗口仍然保持活动状态。
     5 激活该窗口,并以当前大小和在当前位置显示。
     6 最小化指定窗口,并激活按 Z 顺序排列的下一个顶级窗口。
     7 将窗口显示为最小化窗口。活动窗口仍然保持活动状态。
     8 按其当前状态显示窗口。活动窗口仍然保持活动状态。
     9 激活并显示该窗口。如果该窗口已被最小化或最大化,系统将把它还原到原始大小和位置。还原最小化窗口时指定此标志。
     10 根据启动应用程序的程序的状态设置显示状态。

  • 在指定文件夹下创建多个子文件夹

    2011-05-05 16:46:50

    1.VBS:

    Const Number=25
    Dim FolderName
    FolderName="t01_01-"
    For i=1 To Number
     temp=FolderName&i
     Call AddNewFolder("c:\t01_01",temp)
    Next
    If i=Number+1 then
     MsgBox("创建"&i-1&"个文件夹成功")
    Else
     MsgBox("创建失败")
    End if
    Sub AddNewFolder(path, folderName)
       Dim fso, f, fc, nf
       Set fso = CreateObject("Scripting.FileSystemObject")
       Set f = fso.GetFolder(path)
       Set fc = f.SubFolders
       If folderName <> "" Then
          Set nf = fc.Add(folderName)
       Else
          Set nf = fc.Add("New Folder")
       End If
    End Sub

    2.C语言:

    #include <stdio.h>
    #include <dir.h>
    #include <stdlib.h>
    int main (void)
    {
     int i;
     const char* dir_format = "D:\\MyFolder1\\test%d";
     char dir[MAX_PATH] = {0};
     for (i = 0; i <25; ++i)
     {
        sprintf(dir, dir_format, i);
        mkdir(dir);
     }
     system ("start D:\\MyFolder1");
     
     return 0;
    }

  • QTP运行时使用库文件

    2011-04-19 16:38:17

    相关方法:TestLibraries Collection

    '************************************************************************************************************************
    '描述:

    '
    '该示例打开测试,配置测试的库的集合
    '并保存测试。
    '
    '假定:
    'QuickTest 中当前未打开没有保存的测试。
    '有关详细信息,请参阅 Test.SaveAs 方法的示例。
    '************************************************************************************************************************

    Dim qtApp ' As QuickTest.Application ' 声明 Application 对象变量

    Dim qtLibraries 'As QuickTest.TestLibraries ' 声明测试的库集合变量
    Dim lngPosition

    ' 打开 QuickTest
    Set qtApp = CreateObject("QuickTest.Application") ' 创建 Application 对象
    qtApp.Launch ' 启动 QuickTest
    qtApp.Visible = True ' 设置 QuickTest 可见

    ' 打开测试并获取其库集合
    qtApp.Open "C:\Tests\Test1", False, False ' 打开测试
    Set qtLibraries = qtApp.Test.Settings.Resources.Libraries ' 获取库集合对象

    ' 如果 Utilities.vbs 不在集合中,则添加它
    If qtLibraries.Find("C:\Utilities.vbs") = -1 Then ' 如果集合中找不到库
        qtLibraries.Add "C:\Utilities.vbs", 1 ' 向集合添加库
    End If

    ' 如果推入了 Math.vbs - 将其还原到位置 1
    If qtLibraries.Count > 1 And qtLibraries.Item(2) = "C:\Math.vbs" Then ' 如果存在多个库且 Math.vbs 位于位置 2
        qtLibraries.MoveToPos 1, 2 ' 在前两个库之间进行切换
    End If

    ' 如果 Debug.vbs 不在集合中 - 将其删除
    lngPosition = qtLibraries.Find("C:\Debug.vbs") ' 尝试查找 Debug.vbs 库
    If lngPosition <> -1 Then ' 如果在集合中找到库
        qtLibraries.Remove lngPosition ' 将其删除
    End If

    ' 将新库的配置设置为默认配置
    qtLibraries.SetAsDefault ' 将与测试关联的库文件设置为新库的默认库文件

    '保存测试并关闭 QuickTest
    qtApp.Test.Save ' 保存测试
    qtApp.Quit ' 退出 QuickTest

    Set qtLibraries = Nothing ' 释放测试的库集合
    Set qtApp = Nothing ' 释放 Application 对象

  • QTP运行时动态加载外部共享对象库

    2011-04-19 15:46:09

    QTP使用外部共享对象库有2种方法。

    1,通过菜单Resources -> Associate Repositories,关联外部对象库到指定的Action。

    2,通过RepositoriesCollection对象,在运行时灵活的加载,自动关联到当前Action。

    加载外部对象库 
    执行脚本
    移除加载的对象库
    'Upload object repository
    RepositoriesCollection.Add "..\test.tsr"

    'steps...........

    '....................

    'Remove object repository    

    OR_Index = RepositoriesCollection.Find("..\test.tsr")
    RepositoriesCollection.Remove OR_Index

    也可以用RepositoriesCollection.RemoveAll方法来一次性移除所有加载的外部对象库。

     

    QTP,在代码中调用Setting中的Parameter

    在QTP,setting中,可以添加Parameter,通过QTP的保留对象TestArgs,可以访问到这些参数的值。

    示例代码:

    msgbox TestArgs("UserName")

  • 用对象模式实现QTP的远程调用

    2011-04-19 09:38:59

    默认情况下,当你在自动化程序中创建一个Application对象时,该对象创建于本地电脑中(使用QTP的本地副本)。你也可以选择在远程QTP电脑中运行自动化脚本。为了实现这个目标,你必须:

    1.保远程电脑的Distributed COM(DCOM)配置属性已设置为允许你运行QTP自动化脚本。

    2.自动化程序的创建Application对象的脚本行,指定远程电脑的名称,例如在VBscript的CreateObject函数中使用可选参数location。

    名词:

    COM-组件对象模型。COM提供了一套允许同一台计算机上的客户端和服务器之间进行通信的接口。

    DCOM-分布式组件对象模型。是一系列微软的概念和程序接口,利用这个接口,客户端程序对象能够请求来自网络中另一台计算机上的服务器程序对象。

    设置远程电脑中的DCOM配置属性

    要在远程电脑中运行自动化程序,必须确保在远程电脑的DCOM设置中,给了你装载及设置QTP COM 服务器的权限。

    下面描述了在远程电脑中设置DCOM的过程。注意因为远程电脑的操作系统的不同,DCOM配置对话框中显示可能不同。

    (下面的图片都是WinXP操作系统中的):

    1.在远程电脑中,选择Start>Run,打开Run对话框。

    2.在命令栏输入“dcomcnfg”后,点击OK,打开DCOM配置对话框或组件服务窗口(这与操作系统有关),并显示当前电脑中有效的COM应用程序。

    3.在列表中选择“QuickTest Professional Automation”,打开属性对话框。

    4.在QuickTest Professional Automation对话框中,选中Security(安全)页签。

    5.在“launch permissions”(启动和激活权限)部分,选择custom(“自定义”)选项,然后点击EDIT(“编辑”)按钮。

    6.使用Add及Remove操作选择网络用户或组,让用户或组就可以在本地电脑中通过自动化程序,远程让QTP脚本在本电脑上运行。当完成设置用户或组后,点击OK保存设置。

    7.重复5、6步,设置“configuration permissions”部分,设置用户或组,让用户或组可以通过自动化程序,远程修改本电脑的QTP的选项配置。

    8.在QuickTest Professional Automation对话框中,点击Identity(标识)页签,选择interactive user选项。

    9.点击OK保存QuickTest Professional Automation属性设置。

    10.点击OK关闭DCOM配置对话框,或关闭组件服务窗口。

    在远程电脑中创建Application

    当远程电脑的DCOM设置完成后,你就可以在自动化程序中指定该远程电脑。

    在VBscrīpt中,你可以在CreateObject函数的可选参数location中指定远程电脑名称。例如:在一个名为MyServer的远程电脑上运行自动程序,你可以编写以下脚本:

    Dim qtApp
    Set qtApp=CreateObject("QuickTest.Application",\\xx.xxx.xx.xxx)
    qtApp.Launch
    qtApp.Visible = True
    qtApp.Open "\\xx.xxx.xx.xxx\Testaction",False
    qtApp.Test.Run
    qtApp.Quit
    Set qtApp = nothing 

    其中XX.XXX.XX.XXX代表远程运行机的IP地址,Testaction表示QTP工程文件的名称。

    参考:

    http://blog.csdn.net/blizzardlyk/archive/2011/01/24/6160675.aspx

311/212>
Open Toolbar