QTP非常实用的函数.docx

上传人:b****7 文档编号:9968982 上传时间:2023-02-07 格式:DOCX 页数:16 大小:24.03KB
下载 相关 举报
QTP非常实用的函数.docx_第1页
第1页 / 共16页
QTP非常实用的函数.docx_第2页
第2页 / 共16页
QTP非常实用的函数.docx_第3页
第3页 / 共16页
QTP非常实用的函数.docx_第4页
第4页 / 共16页
QTP非常实用的函数.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

QTP非常实用的函数.docx

《QTP非常实用的函数.docx》由会员分享,可在线阅读,更多相关《QTP非常实用的函数.docx(16页珍藏版)》请在冰豆网上搜索。

QTP非常实用的函数.docx

QTP非常实用的函数

QTP

DTParameter对象指的是运行时DataTableSheet中的列对象。

注意:

所有应用于DTParameter对象的方法仅适用于run-timeDataTable对象。

所有对run-timeDataTable对象的改变只影响测试结果,不影响design-timeDataTable。

 

1.     Property

        Name

描述

返回run-timeDataTable的列名。

语法

DTParameter.Name

示例

下面的例子使用“Name”方法返回run-timeDataTable中新创建的列的名称,并将列名写入Report。

Dimparamname

paramname=DataTable.LocalSheet.AddParameter("Food","pizza").Name

Reporter.ReportEvent1,"TheNewParameternameis",paramname

        RawValue

描述

获取当前行指定列所对应的单元格的原始数据。

原始数据是尚未计算处理过的数据,如单元格中的公式内容等。

语法

DTParameter.RawValue

本语法与DataTable.RawValueParameterID[,SheetID]用途是一样的,但是使用方法不同。

示例

下面的例子使用RawValue属性来获取run-timeDataTable的“ActionA”表“Date”列的当前行所对应的单元格中的公式。

本例中的返回值应该是“=Now()“。

FormulaVal=DataTable.GetSheet("ActionA").GetParameter("Date").RawValue

        Value

描述

这个属性是列对象的默认属性。

获取或设置列的当前行所对应的单元格的数据。

注意:

这个方法返回的数据是计算后的数据。

假如单元格中包括公式,则这个方法返回True或False。

语法

获取单元格数据:

DTParameter.ValueorDTParameter

设置单元格数据:

DTParameter.Value=newvalueorDTParameter=newvalue

示例

下面的例子使用Value来设置Sheet“ActionA”的“Destination”列的当前行所对应的单元格的数据。

DataTable.GetSheet("ActionA").GetParameter("Destination").Value="NewYork"

注意:

可以省略本语句中的“Value”,因为Value是DTParameter的默认属性。

        ValueByRow

描述

获取指定列指定行所对应的单元格的数据。

语法

DTParameter.ValueByRow(RowNum)

Argument

Type

Descrīption

RowNum

Number

指定行号。

行号从1开始。

示例

下面的例子使用“ValueByRow”来获得表“ActionA”的“Destination”列的第4行数据。

DataTable.GetSheet("ActionA").GetParameter("Destination").ValueByRow(4)

 1.GetCellData函数

 作用:

获取单元格的值

 例:

 rowCount=Browser("xxx").Page("xxx").Frame("xxx").WebTable("xxx").RowCount

Forcounter=1TorowCount

 text=Browser("xxx").Page("xxx").Frame("xxx").WebTable("xxx").GetCellData(counter,1)

 If(text="xxx")Then

   counter=counter-1

   selectNO="#"&counter

   Browser("xxx").Page("xxx").Frame("xxx").WebRadioGroup("xxx").SelectselectNO

   ExitFor

 EndIf

Next

 

2.把值插入datatable里

 例:

  datatable.setcurrentrow(i)

       datatable.value("name","Global")="name"

       datatable.value("passwd","Global")="passwd"

 

3.用代码来启动浏览器

 Browser1="IE"

 StartURL=""

 IFBrowser1="IE"THEN

    setIE=CreateObject("InternetExplorer.Application")

    IE.Visible=true

    IE.NavigateStartURL

 ENDIF

 

4.ExecuteFile函数

 作用:

ExecuteFile可以直接执行vbs文件,而不需要将其导入resource中

      ExecuteFileFileName

 说明:

whereFileNameistheabsoluteorrelativepathofyourVBscrīptfile.

 例:

ExecuteFile("F:

"test.vbs")

5.Strcomp函数

 作用:

比较文本

 例:

dimstrtext1,strtext2,str,str1,comp1

    strtext1="xxx"

    strtext2="xxx"

    str=VbWindow("xxx").VbWindow("xxx").VbLabe1("xxx").GetTOProperty("text")

    str1=VbWindow("xxx").VbWindow("xxx").VbLabel("xxx").GetTOProperty("text")

    comp1=strcomp(strtext1,str,0)

    If comp=0Then

         msgbox“这两个串相等”

    else

      msgboxstr

    EndIf

 

6.CaptureBitmap

 作用:

捕获屏幕

 

7.GetROProperty

 作用:

取对象属性值

 例:

VbWindow("xxx").VbWindow("xxx").VbWindow("xxx").ActiveX("xxx").GetROProperty("TextMatrix(1,0)") 

 

8.ExitAction-退出当前操作,无论其循环属性如何。

 ExitActionIteration-退出操作的当前循环。

 ExitRun-退出测试,无论其循环属性如何。

 ExitGlobalIteration-退出当前全局循环。

 

9.如何使用Excel对象处理数据?

 Dimxl

 打开excel文件

 FunctionOpenExcelFile(strFilePath)

 Setxl=CreateObject("Excel.Application")

 xl.Workbooks.OpenstrFilePath

 EndFunction

 获得指定单元格数据

 FunctionGetCellData(strSheet,rwIndex,colIndex)

 GetCellData=xl.WorkSheets(strSheet).Cells(rwIndex,colIndex)

 EndFunction

 填充单元格数据

 FunctionPutCellData(strSheet,rwIndex,colIndex,varData)

 xl.WorkSheets(strSheet).Cells(rwIndex,colIndex)=varData

 EndFunction

 保存并推出

 FunctionSaveAndQuit()

 xl.Activeworkbook.save

 xl.Quit

 Setxl=nothing

 EndFunction

 

10.连接sql数据库

 例:

Dimres,cmd,sql

    SetRes=createobject("adodb.recordset")

    SetCmd=createobject("mand")

    Cmd.activeconnection="Provider=SQLOLEDB.1;Password=111111;PersistSecurityInfo=True;UserID=sa;InitialCatalog=xhq;DataSource=192.168.191.142"  '这句话是连接数据库的数据源,要做修改

   Cmd.CommandType=1

   sql="select*from表wherename=username"

   Cmd.CommandText=sql

   Setres=Cmd.Execute()

   Setres=nothing

   Setcmd.ActiveConnection=nothing

SetCmd=nothing

 

11检查页面是否存在

对象exist可以检查某一个页面是否存在。

代码:

ifBrowser("…").Page(“…").Existthen

‘在运行结果中显示的报告,“micPass”的状态是通过,micFail是不通过

  reporter.ReportEventmicPass,“页面存在“,”通过“  

  else

  reporter.ReportEventmicFail,"页面不存在“,"不通过"

endif

12防止程序中断的方法

在回放脚本的时候,有时因为错误导致运行的脚本中断,不能自动运行。

为了能达到真正无人职守的状态可以在脚本的最前面加上如下的代码:

 

Onerrorresumenext ‘遇到错误返回到脚本的下一行继续执行。

Onerrorgoto0‘错误处理的控制权,平时是由QTP控制的(这个叫默认的),当有onerrorresumenext时,是交给onerror处理,当onerrorgoto0时,就换给QTP

13同步点的设定

等待某一对象出现后继续执行,为了防止qtp找不到对象而设定同步点。

有2种方法:

1种是用wait加等待的时间,如wait5(qtp等待5秒钟后继续执行)。

另一种方法是等待要执行对象的出现,如果出现就继续执行,否则一直等待,代码如下:

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

Ify=truethen

  ‘执行下一条语句

  else

   ’对象不出现就一直等待,直到过了10000秒后程序找不到对象报错

Endif

14截屏

在优化脚本时,如果想查看某一页面在执行后的页面效果,可以采取截屏的办法截取当前的操作页面并保存到本地。

代码:

   desktop.capturebitmap“c:

"***.bmp“,ture    ’在脚本中想要查看的一行插入,运行后图片保存到设置的路径下

15导入execl文件并参数化数据方法

Qtp自带了datatable表,可以把要参数化的数据写在里面,但这样写脚本和数据不能分离,后期不好维护脚本。

现在采用从外部导入execl文件的方法导入数据。

代码如下:

  datatable.ImportSheet“D:

"..."data.xls”,“sheet1”,“global“ 

  ‘第一个参数是要导入文件的路径,第二个是execl的第一个表格,第三个参数是在execl的全局范围内查找

  另外datatable对象还有很多操作,比如:

获取表中字段的行数,插入表数据,删除数据等,下面是获取表中数据的代码:

datatable("A","dtglobalsheet)

16为描述性编程自动创建注释

  当希望在每一个新建action时都增加一些头部说明,比如作者、创建日期、说明等信息,那么用actiontemplate来实现最简单快捷。

方法:

用记事本等文本编辑器,输入如下类似的内容:

          'Company:

东方般若           'Date:

Date         然后将文件保存为ActionTemplate.mst,并存放到QTP安装目录下的dat目录。

17导入vbs文件

想要实现脚本的函数化,并更好的维护它,可以把一些公用的函数写到vbs里面,用qtp来调用它。

实现调用vbs的方法有2种:

1.函数executefile加vbs文件的路径

 executefile“c:

"..."funcation.vbs”

2.设置QTPtest/settings/resources/+函数目录

18时间差函数

统计两个日期时间段之间的间隔,还有多少小时

Dimtimediff

timediff=datediff(“H”,now,“2008-8-8”)

Printtimediff

19获取web下拉框中数据的行数和数据值

1.获取行数:

首先将webtable添加到对象库中,查看对象库里有该webtable的属性后

count=Browser("…").Page("Page").Frame("…").WebTable("...").RowCount

  Msgboxcount‘查看行数

2.获取数据值,

  fori=1to count    

value=Browser("…").Page("Page").Frame("…").WebTable("...").getcelldata(i,1)

  msgboxvalue

  next

获取到列表中的数值后,qtp的对象库中没有这个WebElement的对象,一般采用描述性编程的方法获取对象,比如:

用getcelldata获取的表中数据的innertext属性是“普通岗”,那么就可以用如下代码:

fori=1to count    

  value=Browser("…").Page("Page").Frame("…").WebTable("...").getcelldata(i,1)

 

  Browser(“…”).Page(“Page”).Frame(“…”).WebElement(“innertext:

=“&value,”index:

=1”).click

next

20对象获得焦点

判断某个webedit输入框是否获取了焦点,如果没有获取就给它焦点,然后输入数值。

代码如下:

ifnotbrowser("**").page(“**").webedit(“

**").object.isdisabled then

        .object.focus

        .object.set"输入数值“

21获取对象当前属性值

用GetROProperty可以获取对象的当前属性值,比如一些对象的属性经常发生变化,用getroproterty就能定位对象当前的属性状态来执行相应的操作。

Dimpro

pro=browser("**").page(“**").webedit(“

 **“).GetROProperty(“property”,value)

Msgboxpro‘弹出窗口,查看获取的属性。

22Systemutil对象的应用

利用systemutil可以实现的功能:

回放qtp脚本时禁止鼠标和键盘的输入;打开应用程序或web;通过句柄关闭进程;通过进程名关闭进程等。

下面的代码是打开XX网页:

 systemutil.run“iexplore.exe”,“”,“”,“”,“”,3       ‘打开XX的首页,最后面的参数“3”代表打开ie后最大化

  SystemUtil.CloseProcessByName(“iexplore.exe”)     ‘关闭ie

23Action的使用

action分为内部调用和外部调用2种方法:

内部调用使用split划分;外部调用时被调用的action设置成share,并共享对象库。

  splitaction:

RunAction"action",oneIteration

24. 随机数

在测试中有时会用到随即数,有多种方法:

第一种:

n=randomnumber.value(1,255) ’n的值从1到255之间随即产生

第二种:

randomize     ‘更新反回的数据         dimn

            n=int(10*rnd())

            msgboxn       ‘n为10以内的整数

25“is+*”类型功能

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

26对象库

打开对象库resources->objectrepository,或者用快捷方式:

ctrl+r来打开。

1.Qtp中的对象库和脚本是一一对应的,如果脚本中某个对象在对象库中不存在,则无法回放成功,会提示找不到对象。

2.对无法识别的对象用spy工具获得后添加到对象库中。

3.有时候脚本回放失败就是找不到对象的原因,可以通过用spy工具查看找不到对象的属性,然后打开对象库,比较二者的属性信息,如果属性有不相同的说明就是属性的原因,可以通过更改属性的方式统一对象属性。

27调试脚本

1.脚本编写完毕,可以用按ctrl+f7来查看脚本是否有语法错误。

2.Msgbox和print:

在回放脚本时可以方便的查看自己想看到的信息。

3.设置断点:

为了测试某一小段脚本的功能,而当整个action很长的时

候,可以设置断点单步debug。

28强制退出

遇到问题退出可以用exittest或exitfor,例如下面代码:

Publicfunctiontext_exit()

    fori=0to10

           ifi=3then

               exittest

               ‘exitfor

           endif

    next

Endfunction

Text_exit()

      

29连接数据库_增删改

Dimconn,strSql   '定义变量

setconn=CreateObject("ADODB.Connection")  '创建连接

conn.ConnectionString="Provider=SQLOLEDB.1;Password=isaac121379;PersistSecurityInfo=True;UserID=sa;InitialCatalog=WisdomCRM;Datasource=192.168.12.29"  '设置连接字符串

conn.open '开启连接

'strSql="insertintoUM_User values(1,'UserID')" '设置插入语句

strSql="drop tableTM_Task_14_Target"

'strSql="select* fromUM_User"

Ifconn.state=0Then  '如果连接状态为0,表示连接失败,写入reporter对象中,否则表示连接成功

   Reporter.ReportEventmicFail,"testing","数据库连接失败"

   conn.close

   Setconn=nothing

else

  Reporter.ReportEventmicPass,"testing","数据库连接成功"

  conn.executestrSql   '执行更新语句

  conn.close

  Setconn=nothing

EndIf

30连接数据库_查

Dimconn,res,strSql   '定义变量

setconn=CreateObject("ADODB.Connection")  '创建连接

conn.ConnectionString="Provider=SQLOLEDB.1;Password=isaac121379;PersistSecurityInfo=True;UserID=sa;InitialCatalog=WisdomCRM;Datasource=192.168.12.29" '设置连接字符串

conn.open '开启连接

Setres=CreateObject("ADODB.RecordSet")  '创建一个记录集对象

strSql="select*fromUM_User" '设置查询雨具

Ifconn.state=0Then  '如果连接状态为0,表示连接失败,写入reporter对象中,否则表示连接成功

   Reporter.ReportEventmicFail,"testing","数据库连接失败"

   res.close                              '关闭结果集和连接,并且置为空

   Setres=nothing

   conn.close

   Setconn=nothing

else

  Reporter.ReportEventmicPass,"testing","数据库连接成功"

  res.openstrSql,conn   '执行查询语句

  res.MoveFirst       '将记录集游标指到记录集的最开始

  Do

     Reporter.ReportEventmicPass,"file",cstr(res(0))+":

"+cstr(res

(1)) '循环遍历查询结果,并且保持到reproter对象中,直到记录集到达末尾,循环结束

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 哲学历史

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1