文章多数来自互联网,若有冒犯的地方,请朋友们说明下,我会及时删除该文章!

QTP基础代码(二)

上一篇 / 下一篇  2011-06-08 15:54:04 / 个人分类:21天QTP突破

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")

-------------

for i="1" to 3

DataTable.SetCurrentRow(i)

DataTable.Value("A","Global")="I           " //DataTable.SetNextRow

next

-------------

––在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("descrīption=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(record("p_name")="kai") then

num="num+1;

end if          

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.   stel run has two ways

11.   对于时间,日期等的格式检查(一种是正则表达式,另一种是输出对比,如果不好对比,用mid截取一部分对比)

12.   对于一些列表框或树结构,如果发生结点名称发生变化,此时如果报没有彼配的对象,此时可以把更改后面的名称如_2

13.   对于动态变化的对象,要分清是对像还是属性;对于属性可以用gettoproperty("ddd");得到,而对于由于动态无法识别对像可以用描述性脚本,如:

Set ōbject= Descrīption.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(""scrīpting.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(""scrīpting,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

22.   返回一个字符串在另一字符串中的位置instr(string1,string2)

23.   有时回放出现找不到对象时,可能不是由于你的代码问题,而是由于你的操作系统等设置问题。比如:你录制一个选择磁盘中的文件动作,会录制为:

.winlistview("").drap 46,99

.winlistview("").draponitem "she.mp3"

下次录制的时候,如果你的系统文件改为不显示扩展名,下次执行的时候,QTP就找不到she.mp3,只能找到she



TAG:

 

评分:0

我来说两句

congyu15

congyu15

自动化测试工具学习ING,做了近两年的手工测试,对于自动化测试一知半解。希望同行的兄弟姐妹们能够帮助我、指导我学习自动化测试工具,你们的一字一句都是我成长的源泉。感谢你们的无私奉献、乐此不疲!

日历

« 2021-11-01  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 19448
  • 日志数: 126
  • 建立时间: 2010-11-24
  • 更新时间: 2012-02-17

RSS订阅

Open Toolbar