51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2337|回复: 0
打印 上一主题 下一主题

[转贴] UFT开发实例:常用的代码片段

[复制链接]
  • TA的每日心情
    无聊
    昨天 09:06
  • 签到天数: 530 天

    连续签到: 2 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2018-12-26 15:45:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 测试积点老人 于 2018-12-26 15:46 编辑

    1 生产随机数列

    第一种方法

    CODE:

    randomize'更新反回的数据
    funcation rand(k,n)
    n=int((k-1)*rnd+1)
    rand=n
    end funcation

    第二种方法

    CODE:

    n=randomnumber.value(1,255)


    2  当运行到表中的某一行,自动导出表中的所有数据

    CODE:

    row=datatable.getcurrentrow
    if row="5" then
      datatable.export("d:\data.xml")
    end if


    3 自动识别未加密的密码

    CODE:

    webedit("txtpass").setsecure"sdsdf...."

    如果参数化密码,可以直接在数据表中写入未加密的密码,它会自动识别,即不用把setsecure改为set


    4 如果弹出对话框就获取上面提示信息并与表中的信息对比,不统一证明弹出的提示出错,主要用来验证

    CODE:

    1. if browser("web_name").dialog("dialog_name").exist(1) then'如果不出现=false
    2.      error_message=browser("web_name").dialog("diaglog_name").static("用户密码错误!".getRoproperty("text")
    3.    if error_message<>(datatable.value("error_info"))then
    4.          msgbox(error_message)
    5.       end if
    6.      browser("web_name").dialog("diaglog_name").close
    7.   end if
    复制代码

    这里我总结了两点技巧:
      一是:对于dialog中,虽然提示信息对象名称是"用户密码错误",但如果信息对象名称是“该用户不存在”,不用更改会自动识别,我想主要是录制第一遍时,“用户密码错误”只是让运行时能找到这个控制,而不管它是什么内容,因为在对象仓库中,text不是决定该对象的属性
        二是:如果对于提示信息比较长的,可以用mid(error_message,n,m)取一部份特征提示信息进行验证,这样我想可以节省处理时间,又可以避免长度以及空格等字符的处理


    5  datatable.value完整语法

    datatable.value("num")只在global形式下的一种省略形式;完整形式
    是:

    CODE:

    datatable.value("num",dtlocalsheet)

    -----向某一列的单元格赋值:

    CODE:

    datatable.value("column_name",dtlocalsheet)="nanjing"

    -----取得某一行具体值:

    CODE:

    datatable.setcurrentrow(n)
    msgbox(datatable.getsheet("global").getparameter("column_name").Rawvalue)
    或者kk=datatable.Rawvalue("column_name","action1")

    ----在run-time时,动态添加表格与数据

    CODE:

    kk=datatable.addsheet("sheet_name").addparameter("column_name","value").name;


    6  简化代码,明晰结构的方式with--end with 结构:

    CODE:

    with Dialog("name")
           c1=.button("b_name").click'//等价于Dialog("name").button("b_name").click
    end with


    7   wintreeview一些操作

    CODE:

    选择一个条目:wintreeview.select(item)'根是0
    根的名称:wintreeview.getitem(0)


    8   数据库检查点模块:

    CODE:

    1. sub database_check
    2. set con=createobject("adodb.connection")
    3. con.open "Description=IBM_ODBC;DRIVER=SQL Server;SERVER=IBM;UID=sa;"&_
    4.                  "PWD=123456;APP=Quick Test Pro;WSID=IBM;DATABASE=IBM_table"
    5. 'access方式:con.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=d:\test.mdb"
    6. 'Orocle方式:con.open "DRIVER={Oracle in OraHome92};SERVER=CESHI;UID=CND_TEST;PWD=CND;DBQ=CESHI;DBA=W;APA=T;EXC=F;XSM=Default;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=Lo;BAM=IfAllSuccessful;MTS=F;MDI=Me;CSR=F;FWC=F;PFC=10;TLO=O;"
    7. set record=createobject("adodb.recordset")
    8. sql="select*from ibm_one_table"
    9. record.open sql,con
    10. DO
    11. if(record("ibm_table_column")="kai")then'//查找表格中有多少kai
    12. num=num+1;
    13. end if
    14. record.movenext
    15. loop until record.eof=true
    16. record.close
    17. set record=nothing
    18. con.close
    19. set con=nothing
    20. end sub
    复制代码

    9   换行符

    CODE:

    vbcr----chr(13)回车符
        vblf----chr(10)换行符
        vbcrlf----chr(13)+chr(10)结合


    10  Run from step有两种方式:

    CODE:

    在Keyword View模式会从本步骤运行到所有action结束
    在expert view模式仅会将本action运行结束


    11  对于属性是变化的,有时可以把该属性从识别对象里删除,来解决识别问题
    12  对系统文件的操作

    CODE:

    1. -------从系统的文件中获取信息及删除文件
    2.   get_file_infor("c:\she.mpg")
    3.    function get_file_infor(url)
    4.     dim fso,f
    5.     set fso=createobject("scripting.filesystemobject")
    6.     set f=fso.getfile(url)
    7.     f.name:f.size:f.type:f.datacreated'///获取文件信息
    8.     fso.deletefile(url)'/////删除文件
    9.    end function
    10. --------获取文件夹里所有文件信息
    11. get_folder_infor("c:\kai")
    12. function get_folder_infor(folder)
    13. dim fso,f,f1,n
    14. set fso=createobject("scripting,filesystemobject")
    15. set f=fso.getfolder(folder)
    16. set fc=f.files
    17. for each f1 in fc
    18. select case f1.name
    19. case"kai.mpg","she.mpg","dd.mp3"'//检查文件夹里是否含有这些文件
    20. end select
    21. next
    22. end function
    复制代码

    13   等待某个对象出现方法

    CODE:

    y=......waitproperty("visible",true,10000)


    14   防程序中断方法

    CODE:

    On error resume next
    On error goto handle


    15  数组的应用:

    CODE:

    name=array(1,2,"aa","bb")
    name(2)="aa"


    16  正则表达式应用模板

    CODE:


    进行日期YYYY-MM-DD的格式检查 :

    1. Function RegExpTest(patrn, strng)
    2.   Dim regEx, Match, Matches      ' Create variable.
    3.   Set regEx = New RegExp         ' Create a regular expression.
    4.   regEx.Pattern = patrn         ' Set pattern.
    5.   regEx.IgnoreCase = True         ' Set case insensitivity.
    6.   regEx.Global = True         ' Set global applicability.
    7.   Set Matches = regEx.Execute(strng)   ' Execute search.
    8.   For Each Match in Matches      ' Iterate Matches collection.
    9.     RetStr = RetStr & "Match found at position "
    10.     RetStr = RetStr & Match.FirstIndex & ". Match Value is '"
    11.     RetStr = RetStr & Match.Value & "'." & vbCRLF
    12.   Next
    13.   RegExpTest = RetStr
    14. End Function
    15. 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)))))[        DISCUZ_CODE_3        ]quot;
    16. result_message=RegExpTest(date_pattern, inputbox("请你输入要检查的时间:"))'用其它正则表达式更改此处
    17. Select case result_message
    18. Case ""
    19.          msgbox("你输入的日期格式与标准不匹配")
    20. case else  MsgBox(result_message)
    21. end select
    复制代码

    17   返回一个字符串在另一字符串中的位置

    CODE:

    instr(string1,string2)


    18   有时回放出现找不到对象时,可能不是由于你的代码问题,而是由于你的操作系统等设置问题;

    CODE:

    举例说明1:
    比如:你录制一个选择磁盘中的文件动作
    会录制为:
    .winlistview("  ").drap 46,99
    .winlistview("  ").draponitem "she.mp3"
    下次录制的时候,如果你的系统文件改为不显示扩展名,下次执行的时候,QTP就找不到she.mp3,只能找到she;
    举例说明2:
    有时由于不同操作系统以及不同的ie,导致有些窗口不能识别,比如在2000下弹出的网页对话框的标题是:
    “web对话框",而在2003上是”网页对话框"


    19  "is+*"类型function

    CODE:


    isarray'是否是数组
    isconnected'判断QTP是否连接到TD
    isdate'是否是合法的日期类型
    isempty'判断是否初始化
    isNull'判断是否为空值
    isNumeric'判断是否是数字型
    isobject'判断是否一个功能对象
    isready'判断设备是否准备就绪
    isRootFolder'是否是根目录



    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-22 22:34 , Processed in 0.063679 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表