好好学习编码技术、测试理论、英语。

qtp 基础代码---转载

上一篇 / 下一篇  2007-03-21 15:12:52 / 个人分类:QTP

qtp基础代码---转载自51testing中的kai_top网友。

1生产随机数列
第一种方法

CODE:

[Copy to clipboard]

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

第二种方法

CODE:

[Copy to clipboard]

n=randomnumber.value(1,255)

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

CODE:

[Copy to clipboard]

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

3

CODE:

[Copy to clipboard]

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

如果参数化密码,可以直接在数据表中写入未加密的密码,它会自动识别,即不用把setsecure改为set
4
 如果弹出对话框就获取上面提示信息并与表中的信息对比,不统一证明弹出的提示出错,主要用来验证

CODE:

[Copy to clipboard]

 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("num")
只在global形式下的一种省略形式;完整形式
:

CODE:

[Copy to clipboard]

datatable.value("num",dtlocalsheet)

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

CODE:

[Copy to clipboard]

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

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

CODE:

[Copy to clipboard]

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

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

CODE:

[Copy to clipboard]

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

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

CODE:

[Copy to clipboard]

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

7   wintreeview一些操作

CODE:

[Copy to clipboard]

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

8   数据库检查点模块:

CODE:

[Copy to clipboard]

sub database_check
set con=createobject("adodb.connection")
con.open "Descrīption=IBM_ODBC;DRIVER=SQL Server;SERVER=IBM;UID=sa;"&_
                 "PWD=123456;APP=Quick Test Pro;WSID=IBM;DATABASE=IBM_table"
'access
方式:con.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=d:\test.mdb"
'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;"
set record=createobject("adodb.recordset")
sql="select*from ibm_one_table"
record.open sql,con
DO
if(record("ibm_table_column")="kai")then'//
查找表格中有多少kai
num=num+1;
end if
record.movenext
loop until record.eof=true
record.close
set record=nothing
con.close
set con=nothing
end sub

9   换行符

CODE:

[Copy to clipboard]

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

10  Run from step有两种方式:

CODE:

[Copy to clipboard]

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

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

CODE:

[Copy to clipboard]

-------从系统的文件中获取信息及删除文件
  get_file_infor("c:\she.mpg")
   function get_file_infor(url)
    dim fso,f
    set fso=createobject("scrīpting.filesystemobject")
    set f=fso.getfile(url)
    f.name:f.size:f.type:f.datacreated'///
获取文件信息
    fso.deletefile(url)'/////
删除文件
   end function
--------
获取文件夹里所有文件信息
get_folder_infor("c:\kai")
function get_folder_infor(folder)
dim fso,f,f1,n
set fso=createobject("scrīpting,filesystemobject")
set f=fso.getfolder(folder)
set fc=f.files
for each f1 infc
select case f1.name
case"kai.mpg","she.mpg","dd.mp3"'//
检查文件夹里是否含有这些文件
end select
next
end function

13   等待某个对象出现方法

CODE:

[Copy to clipboard]

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

14   防程序中断方法

CODE:

[Copy to clipboard]

On error resume next
On error goto handle

15  数组的应用:

CODE:

[Copy to clipboard]

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

16  正则表达式应用模板

CODE:

[Copy to clipboard]

进行日期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

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

CODE:

[Copy to clipboard]

instr(string1,string2)

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

CODE:

[Copy to clipboard]

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

19  "is+*"类型function

CODE:

[Copy to clipboard]

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

 


TAG: QTP

高人的个人空间 引用 删除 高人   /   2014-08-25 12:01:12
1
wangyulei的个人空间 引用 删除 wangyulei   /   2012-02-14 15:14:56
5
 

评分:0

我来说两句

日历

« 2024-04-23  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 16222
  • 日志数: 25
  • 建立时间: 2007-03-08
  • 更新时间: 2007-10-09

RSS订阅

Open Toolbar