伯乐共勉

讨论。NET专区
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

QTP中一些基础代码结构累积

Posted on 2007-06-20 11:36  伯乐共勉  阅读(303)  评论(0编辑  收藏  举报
 
  • 出处:统一教学网
  • 作者:kai_top 的 Blog
  • 编辑:N/A
  • 发表日期:2006-6-25 14:34:00
  • 1 生产随机数列
    第一种方法-----------------------------------
    randomize''''更新反回的数据
    funcation rand(k,n)
    n=int((k-1)*rnd+1)
    rand=n
    end funcation
    第二种方法
    n=randomnumber.value(1,255)
    2  当运行到表中的某一行,自动导出表中的所有数据
    row=datatable.getcurrentrow
    if row="5" then
      datatable.export("d:\data.xml")
    end if
    3  webedit("txtpass").setsecure"sdsdf...."
    如果参数化密码,可以直接在数据表中写入未加密的密码,它会自动识别,即不用把setsecure改为set
    4 如果弹出对话框就获取上面提示信息并与表中的信息对比,不统一证明弹出的提示出错,主要用来验证
     if browser("web_name".dialog("dialog_name").exist(1) then''''如果不出现=false
         error_message=browser("web_name".dialog("diaglog_name".static("用户密码错误!").getRoproperty("text")
       if error_message<>(datatable.value("error_info"))then
             msgbox(error_message)
          end if
         browser("web_name").dialog("diaglog_name").close
      end if
    这里我总结了两点技巧:
     一是:对于dialog中,虽然提示信息对象名称是"用户密码错误",但如果信息对象名称是“该用户不存在”,不用更改会自动识别,我想主要是录制第一遍时,“用户密码错误”只是让运行时能找到这个控制,而不管它是什么内容,因为在对象仓库中,text不是决定该对象的属性
        二是:如果对于提示信息比较长的,可以用mid(error_message,n,m)取一部份特征提示信息进行验证,这样我想可以节省处理时间,又可以避免长度以及空格等字符的处理
    5 在运行时,向某一个单元格赋值: datatable.value("kai",dtlocalsheet)="nanjing"
    datatable.value("num")只在global形式下的一种省略形式;完整形式
    是datatable.value("num",dtlocalsheet)
    -----取得某一具体行的值:
    datatable.setcurrentrow(n);
    msgbox(datatable.getsheet("global").getparameter("kai").Rawvalue)
    或者kk=datatable.Rawvalue("kai","action1")
    -----在run-time期间,添加一个action和参数
    kk=datatable.addsheet("name").addparameter("kai","ddd").name''''/value
    6 with dialog("name")''''可以省好多代码,看着也简洁
         content=.wintreeview
       end with
    7  wintreeview.select(item)(根是0,列表第一个也是0)
       wintreeview.getcontent
       wintreeview.getitem(整行)+";"+
       winlistview.getitem(行中的第一个字符段)
       wincheckbox("").set"off"''''/on
    8  数据库检查点:
    sub getdata
    set con=createobject("adodb.connection")
    con.open("description=mod;driver=sqlserver;server=hp\sqlserver;uid=sa;"&_
             "pwd=11111;APP=qtp;WSID=hp;database=MOD31"  ''''用sqlserver方式
    Con.open "DRIVER = {Microsoft Access Driver (*.mdb)};DBQ=D:\Testdb.mdb" ''''用access方式
    set record=createobject("adodb.recordset")
    sql="select * from m3_program"       ''''选择具体满足一条件的:sql="select* from m3_program where "
    record.open sql,con          
    if(not record.eof) then
    record.movenext
    msgbox("p_name")
    end if
    record.close
    set record=nothing
    con.close
    set con=nothing
    end sub
    ''''如果没有查到内容,在结果中不会报错,也不会弹出窗口
    9 vbcr----chr(13)回车符
      vblf----chr(10)换行符
    vbcrlf----chr(13)+chr(10)结合
    10 从step run has two ways(一是在key-driven页面,另一个是在代码页面,前者走完项目,后者只是本acton第一行
    11 对于时间,日期等的格式检查(一种是正则表达式,另一种是输出对比,如果
     不好对比,用mid截取一部分对比)
    12对于一些列表框或树结构,如果发生结点名称发生变化,此时如果报没有彼配的对象,此时可以把更改后面的名称如_2"
    13;对于动态变化的对象,要分清是对像还是属性;对于属性可以用gettoproperty("ddd");得到;而对于由于动态无法识别对
    像可以用描述性脚本:
     如:Set Object= Description.Create()
    Object("regexpwndclass").Value="HtmlButton"
    Object("regexpwndtitle").Value="登陆"
    browser("ss").page("a").button(Object).click
    14:对于属性是变化的,有时可以把该属性从识别对象里删除
    15:从系统的文件中获取信息及删除文件
      get_file_infor("c:\she.mpg")
       function get_file_infor(url)
        dim fso,f
        set fso=createobject("scripting.filesystemobject")
        set f=fso.getfile(url)
        msgbox(f.datecreated)
        f.name:f.size:f.type
        fso.deletefile(url)''''/////删除文件
       end function
    --------获取文件夹里所有文件信息
    get_folder_infor("c:\kai")
    function get_folder_infor(folder)
    dim fso,f,f1,n
    set fso=createobject("scripting,filesystemobject")
    set f=fso.getfolder(folder)
    set fc=f.files
    for each f1 in fc
    select case f1.name
    case"kai.mpg","she.mpg","dd.mp3"
    end select
    next
    end function

    16,四舍五入可以在后面+0.5,进行自动解决
    17,y=-------waitproperty("visible",true,10000)
    18,on error resume next
       on error goto o
    19 window("").wintreeview("systreeview32").TYpe micctrldown+"p"+micctrlup
    20,定义数组 name=array(1,2,"aa","bb");name(0)=1
    21进行日期YYYY-MM-DD的格式检查 :
    Function RegExpTest(patrn, strng)
      Dim regEx, Match, Matches      '''' Create variable.
      Set regEx = New RegExp         '''' Create a regular expression.
      regEx.Pattern = patrn         '''' Set pattern.
      regEx.IgnoreCase = True         '''' Set case insensitivity.
      regEx.Global = True         '''' Set global applicability.
      Set Matches = regEx.Execute(strng)   '''' Execute search.
      For Each Match in Matches      '''' Iterate Matches collection.
        RetStr = RetStr & "Match found at position "
        RetStr = RetStr & Match.FirstIndex & ". Match Value is ''''"
        RetStr = RetStr & Match.Value & "''''." & vbCRLF
      Next
      RegExpTest = RetStr
    End Function
    date_pattern="^((((19|20)(([02468][048])|([13579][26]))-02-29))|((20[0-9][0-9])|(19[0-9][0-9]))-((((0[1-9])|(1[0-2]))-((0[1-9])|(1\d)|(2[0-8])))|((((0[13578])|(1[02]))-31)|(((01,3-9])|(1[0-2]))-(29|30)))))$"
    result_message=RegExpTest(date_pattern, inputbox("请你输入要检查的时间:

    "))
    Select case result_message
     Case ""
     msgbox("你输入的日期格式与标准不匹配")
     case else  MsgBox(result_message)
    end select