我看到了全世界最好看的眼睛。 揉眼睛的手还有双眼皮。

QTP总结

上一篇 / 下一篇  2008-04-29 09:11:30 / 个人分类:QTP

摘抄自:http://www.51testing.com/?38579/action_viewspace_itemid_80837.html

1、拆分语句split
例:取得当前日期后拆分
riqi=date()
    my=split(riqi,"-")
    riqi=my(1)&"月"&my(2)&"日"
    datatable("riqi",DtGlobalSheet)=riqi
    本地表:DataTable("a", dtLocalSheet)
riqi= year(date)& "-" & Right("0"& month(date),2) & "-"&Right("0"&   Day(Date),2)

2、取得表格中某行某列的值GetCellData
例:飞机票取票价
shuA=Browser("Welcome:MercuryTours").Page("Book a Flight: Mercury").WebTable("New York to Zurich").GetCellData(3,3)


3、取距某年某月某日的天数datediff
例:计算距2008-08-08奥运天数
datediff("d",now,"2008-8-8")


4、描述性编程text:=
例:取得某页面上某文字的链接
Browser("").Page("").Link("text:=娱乐").Click
     或
     neirong="娱乐"
     Browser("").Page("").Link("text:="&neirong).Click


5、网页中HTML编辑器的录制
功能:验证126邮箱的发信功能正确
操作步骤:
      a.录制脚本,动作包括整个发信的过程。
      b.修改脚本,在输入信件主题代码后加wait 10语句
       c.回放脚本,观察在邮件正文中输入的内容,回放时QTP是否写入
      d.重新修改脚本,保证回放时QTP在邮件正文中写入内容

英文解决方案:
    Browser("网易126免费邮--你的专业电子邮局").Page("网易电子邮箱 - xueqinzhaoqing@126.co").Frame("indexFrame").WebEdit("subject").Click
    wait 1
     Setting.WebPackage( "ReplayType")=2      '配置使用浏览器事件或鼠标运行鼠标操作的'方式.1 - 使用浏览器事件运行鼠标操作,2 - 使用鼠标运行鼠标操作。
     Set ōbj=createobject("wscrīpt.shell")
     obj.sendkeys "{TAB}"
     wait 2
     obj.sendkeys "abc1111"
     wait 1
     Setting.WebPackage( "ReplayType")=1
中文解决方案

strCopy = "软件测试." 
Set ōbjIE = CreateObject("InternetExplorer.Application") 
objIE.Navigate("about:blank") 
objIE.document.parentwindow.clipboardData.SetData "text", strCopy 
objIE.Quit

wait 1
Setting.WebPackage( "ReplayType")=2
Set ōbj=createobject("wscrīpt.shell")
obj.sendkeys "{TAB}"
wait 2
obj.sendkeys "^v"
wait 1
Setting.WebPackage( "ReplayType")=1

6.使用MultiTestManager添加文件时可以直接往里拖的哦。

7.函数:新建记事本,改名为public.vbs例:
   function ZHIRSS
ZHIRSS="RSS行业资讯分类维护"
end function
  使用语句executefile "d:\zhaopin\case\denglu.vbs"或设置QTP test/settings/resources/+函数目录

8.设置动作循环:右击/actiong call properties/run on all rows

9.设置动作允许被调用:右击/action properties/general/reusable action打勾

10.QTP与MTM连接:Tools/option/run/allow other mercury products to run...

11.插入已存在的动作1)insert/call to copy of action...复制可修改
                   2)insert/call to existing of action...复制不可修改

12.QTP报告自动跳出设置:Options>Run>View results when run session ends

13.判断表格是否存在:
If Browser("数商3.0后台管理系统").Page("Page").Frame("main_5").WebTable("标题").Exist then
reporter.ReportEvent 0,"pass","系统显示了所有的资讯列表!"
else
  reporter.ReportEvent 1,"fail","系统没有显示资讯列表!"
end if

14.获取表格行数:Browser("数商3.0后台管理系统").Page("Page").Frame("main_5").WebTable("标题").RowCount

15.注释脚本存在位置:qtp/dat/ActionTemplate.mst

16取本地文件名称Function ShowFileList(folderspec)
   Dim fso, f, f1, fc, s
   Set fso = CreateObject("scrīpting.FileSystemObject")
   Set f = fso.GetFolder(folderspec)
   Set fc = f.Files
   For Each f1 in fc
      s = s & f1.name
      s = s &   "  "
   Next
   ShowFileList = s
End Function
wenjian=ShowFileList("D:\下载\本地下载1\")

17.取本地文件删除:del= DeleFile("D:\下载\本地下载1\")
Function DeleFile(folderspec)
   Dim fso, f, f1, fc, s
   Set fso = CreateObject("scrīpting.FileSystemObject")
   Set f = fso.GetFolder(folderspec)
   Set fc = f.Files
   For Each f1 in fc
         f1.delete
   Next
End Function

18.sousuo2=Browser("Browser").Page("Page_4").Check (CheckPoint("2007-11-08 14:21"))
If (sousuo2)eqv(true) Then
    reporter.ReportEvent 0,"",""
else
   reporter.ReportEvent 1,"",""
End If

19.取参数化数据的行数,只在某几行进执行某些语句
row=datatable.GetSheet(3).getcurrentrow
If row = 3 Or row = 4 Then

20.单选框置灰zhihui=Browser("下载中心--新增下载文件").Page("下载中心--新增下载文件_4").WebRadioGroup("downloadType").GetROProperty("disabled")
If  zhihui=1 Then
End If

29.取树结构
Set Desc=descrīption.create
Desc("micclass").value="WebTable"
Set List=Browser("Browser").Page("Page").Frame("main").ChildObjects(Desc)
yuqi=List(0).GetROProperty("innertext")
msgbox yuqi
yuqi=split(yuqi," ")
msgbox yuqi(1)

30.关闭所有IE
SystemUtil.CloseProcessByName("iexplore.exe")

31.创建action template.
    当希望在每一个新建action时都增加一些头部说明,比如作者、创建日期、说明等,用action template
    来实现最简单快捷。
    方法:用记事本等文本编辑器,输入如下类似的内容:
          'Company: xxxx
          'Author: xxx
          'Product: xxx
          'Date: xx
         然后将文件保存为ActionTemplate.mst,并存放到QTP安装目录下的dat目录。

32.启动IE的语句:SystemUtil.Run "iexplore.exe", "http://www.***.com"
   关闭IE或其他程序的语句:SystemUtil.CloseProcessByName "app.exe"
     or  SystemUtil.CloseProcessByWndTitle "Some Title"

33.获取图片的名称
ObjectName = Browser(…).Page(…).Image("Find").GetProperty("Name")

34.检查某个对象是否存在,如果存在弹出对话框说明对象存在。
If Browser("Browser").Page("Page").Applet("login.html").JavaEdit("username").Exist Then
MsgBox("The object exists.")
End if

35.同步点
Browser("数商3.0制作平台").Dialog("Microsoft Internet Explorer").WaitProperty "visible", True, 120000
设置test/test settings/object synchronizationg timeout 一致

36.视图框显示为乱码时:调整原页面编码,在QTP/tools/change active screen

37.添加附件:
   Browser("**").Page("**").WebFile("filePath").Click
Browser("**").Dialog("**").WinEdit("文件名(N):").Set "D:\**.jpg"
Browser("下载中心--新增下载文件").Dialog("选择文件").WinButton("打开(O)").Click
添加相应的对象


38.在图片上右击添加:tools/web event recording configuration/custom settings
webedit/event/add/onblur,onchange,onfocus,onpropertychan,onsubmit
webdlement/event/add/onclick,onmousedown,onmouseup/listen always

39.数据执行保护
  方法一、右击我的电脑/高级/性能/设置/数据执行保护/为除下列选定程序之外的所有程序和服务启用DEP/添加被保护的程序。
  方法二、C:/BOOT.INT修改noexecute=alwaysoff

40.在图片上右击添加:tools/web event recording configuration/custom settings
webedit/event/add/onblur,onchange,onfocus,onpropertychan,onsubmit
webdlement/event/add/onclick,onmousedown,onmouseup/listen always

41.去掉前后空格
If trim(mingcheng)=trim(yuqi) Then

42.分类树问题解决
Set Desc=descrīption.create
Desc("micclass").value="WebTable"
Set List=Browser("Browser").Page("Page").Frame("main").ChildObjects(Desc)
yuqi=List(0).GetROProperty("innertext")
msgbox yuqi
yuqi=split(yuqi," ")
msgbox yuqi(1)


43.引用自定义环境变量
Environment.LoadFromFile "D:\询价\case\环境\huiyuan.xml"

44.环境变量有2种,一种是QTP的内置变量,一种是用户自定义的变量。内置变量是可以直接就可以用,自定义环境变量需要在菜单中选择“文件”——>“设置”——>“环境”,在变量类型中选择“用户自定义”,然后进行添加,可以对添加的变量全部导出,导出的文件为.xml格式的文档。既然可以导出,那么必然可以导入.xml文件,你可以在该对话框中的选中“从外部文件导入”,然后添加其文件路径即可。(当然这些操作都可以直接使用脚本来实现,如:Environment.LoadFromFile(“FileName”))
例如:在桌面建立一个Var.xml,如下
-<Environment>    //以这个开始的内部都是定义环境变量,直到以</Environment>结束
- <Variable>                           // 变量定义起始标识
                 <Name>aa</Name>               // 变量名称
                 <Value>11</Value>               // 变量值
        </Variable>                            // 变量定义结束标识
- <Variable>
                 <Name>bb</Name>
                 <Value>22</Value>
        </Variable>
- <Variable>
                 <Name>cc</Name>
                 <Value>33</Value>
              </Variable>
  </Environment>
然后导入本测试的环境变量文件中,在专家视图里编写下面的脚本代码:
Dim aParam3
aParam3=Environment.Value(“aa”)          // 调用环境变量
msgbox aParam3
运行测试,会输出”11”

45.在HTML编辑器中写入数据
用低水平录制写入编辑器过程,增加编辑部器前的对象,加入click事件,再用TAB
例如:
Browser("广告管理").Page("广告管理").WebEdit("descrīption").Click
Window("Microsoft Internet Explorer").WinObject("Internet Explorer_Server").Type mictab
Window("Microsoft Internet Explorer").WinObject("Internet Explorer_Server").Type "aaa"

46.Browser("creationtime:=1").close
   两个页面title相同无法识别时使用描述必编辑
    Browser("creationtime:=1").page(title:=****).WebEdit("name:=***").Set "***"
    或Browser("creationtime:=1").page(index:=1).WebEdit("index:=0").Set "***"

47.场景恢复:
   当某些提示框会在不定期时有提示时,如果自动点击确定或某些按钮
   1、tools/recovery scenaril manager,制作相应的提示框和要点击的按钮,并保存
   2、test/settings/recovery,添加刚保存的.qrs

48.输入验证码,先提示一个输入框,在输入框内输入验证码,点击[确定],把输入的验证码框
   Dim a
  a = InputBox("输入名字")

49.对象库中对象名称不分为_2,_3...设置:tool/options/web/page/fram options/
     crate a new page test object for为different test object descrīptons
     crest a new frame test object for为different test object descrīptions

50.验证测试输入框输入的最大允许字数功能的正确

QTP脚本代码中编写
Set aa=Browser("Browser").Page("Page").Frame("main").WebEdit("PayTypeName")
if konglen(aa,20) eqv true then
reporter.ReportEvent 0,"添加支付方式,支付方式输入框允许输入的最大字符功能正确",""
else
reporter.ReportEvent 1,"添加支付方式,支付方式输入框允许输入的最大字符功能错误",""
end if

此函数的功能为:验证测试输入框输入的最大允许字数功能的正确,函数可写在public.vbs中
Function konglen(duixiang,guifanshu)
duixiang.Click
wait 1
Setting.WebPackage( "ReplayType")=2
Set ōbj=createobject("wscrīpt.shell")
i=0
ōld="a"
xin="b"
while old<>xin
ōld=duixiang.GetROProperty("value")
i=i+1
wait 0,20
obj.sendkeys "1"
wait 0,20
xin=duixiang.GetROProperty("value")
wend
'msgbox i
If i-1=guifanshu Then
konglen=true
else
konglen=false
End If
     Setting.WebPackage( "ReplayType")=1
End Function

51.超时设置:Setting("DefaultTimeout") =1000000

52.共享对象库:Set App = CreateObject("QuickTest.Application")
App.Test.Settings.Resources.ObjectRepositoryPath = "path"

53.取颜色   browser("b").page("p").Object.currentStyle“:.color
54.显示行号设置:Tools- --> Editor Options...-->General-->Show line number,


55.不同数据库检查点手动SQL写法
QTP插入数据库检查点,手动指定SQL语句的写法。
一、SQL Server格式(本地无需安装SQL Server)
connectionstring(连接字符串):
1.本地没有创建数据源的方式
DRIVER=SQL Server;SERVER=数据库IP地址;UID=用户名;PWD=密码;APP=Microsoft Office 2003;WSID=本地主机名;DATABASE=数据库名

实例:
DRIVER=SQL Server;SERVER=10.160.11.10;UID=sa;PWD=sa;APP=Microsoft Office 2003;WSID=RJHLJUN;DATABASE=dcwork

2.本地已创建数据源的方式
DSN=数据源名称;UID=用户名;PWD=密码;APP=Microsoft Office 2003;WSID=数据库的主机名;DATABASE=数据库名

实例:
DSN=LocalServer;UID=sa;PWD=sa;APP=Microsoft Office 2003;WSID=RJDCWORKTEST;DATABASE=dcwork

3.SQL语句实例(从数据库表HR_LANGUAGE_TYPE中,查询字段语言名称LANGUAGE_NAME,条件语言名称=中文,按语言名称升序排序结果)
source(SQL语句):
SELECT HR_LANGUAGE_TYPE.LANGUAGE_NAME  FROM dcwork.dbo.HR_LANGUAGE_TYPE HR_LANGUAGE_TYPE  WHERE (HR_LANGUAGE_TYPE.LANGUAGE_NAME='中文')  ORDER BY HR_LANGUAGE_TYPE.LANGUAGE_NAME


二、DB2格式:(本地至少安装DB2 Run-Time Client Lite)
connectionstring(连接字符串):
1.本地没有创建数据源的方式
DRIVER={IBM DB2 ODBC DRIVER};UID=用户名;PWD=密码;MODE=SHARE;DBALIAS=数据库名;

实例:
DRIVER={IBM DB2 ODBC DRIVER};UID=db2admin;PWD=db2admin;MODE=SHARE;DBALIAS=DCWORK;

2.本地已创建数据源的方式
DSN=数据源名称;UID=用户名;PWD=密码;MODE=SHARE;DBALIAS=DCWORK;

实例:
DSN=DWCORKDB2;UID=db2admin;PWD=db2admin;MODE=SHARE;DBALIAS=DCWORK;

3.SQL语句实例
source:SQL语句
SELECT HR_LANGUAGE_TYPE.LANGUAGE_NAME  FROM DB2ADMIN.HR_LANGUAGE_TYPE HR_LANGUAGE_TYPE  WHERE (HR_LANGUAGE_TYPE.LANGUAGE_NAME='中文')  ORDER BY HR_LANGUAGE_TYPE.LANGUAGE_NAME


三、Oracle格式:(本地需要安装Oracle ODBC DRIVER)
connectionstring(连接字符串):
1.本地没有创建数据源的方式
DRIVER={Oracle in OraHome92};SERVER=数据库服务名;UID=用户名;PWD=密码;DBQ=数据库名;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;

实例:
DRIVER={Oracle in OraHome92};SERVER=DCWORK;UID=DCWORK;PWD=DCWORK;DBQ=DCWORK;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;



2.本地已创建数据源的方式
DSN=数据源名称;UID=用户名;PWD=密码;DBQ=数据库名;DBA=W;APA=T;EXC=F;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=F;BAM=IfAllSuccessful;MTS=F;MDI=F;CSR=F;FWC=F;PFC=10;TLO=0;

实例:
DSN=dcworkoracle;UID=DCWORK;DBQ=DCWORK;DBA=W;APA=T;EXC=F;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=F;BAM=IfAllSuccessful;MTS=F;MDI=F;CSR=F;FWC=F;PFC=10;TLO=0;

3.SQL语句实例
source:SQL语句
SELECT HR_LANGUAGE_TYPE.LANGUAGE_NAME  FROM DCWORK.HR_LANGUAGE_TYPE HR_LANGUAGE_TYPE  WHERE (HR_LANGUAGE_TYPE.LANGUAGE_NAME='中文')  ORDER BY HR_LANGUAGE_TYPE.LANGUAGE_NAME



四, mysql
Set Conn = CreateObject("ADODB.Connection" )
str="DRIVER={MySQL ODBC 3.51 Driver};SERVER=192.168.1.100;DATABASE=wp_blog;user id=zzz ; password=123456"
Conn.open str
Set Rs = CreateObject ("ADODB.Recordset" )
sql = "select * from `wp_blog`.`blg_webcategory` limit 0, 5000;"
Rs.open sql,conn,1,3
If (not Rs.eof) then
Rs.MoveFirst
MsgBox Rs(0)
MsgBox Rs(1)
MsgBox Rs(2)
MsgBox Rs(3)
end if

Rs.close
Set Rs = Nothing
Conn.close
Set Conn = Nothing
(转载于 http://bbs.51testing.com/thread-42921-1-1.html )

五. access

Set Conn = CreateObject("ADODB.Connection" )
str="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:/db1.mdb"
Conn.open str
Set Rs = CreateObject ("ADODB.Recordset" )


56.*.xml
Environment.LoadFromFile "D:\新建文件夹\a.xml"
Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").Set Environment("HuiYuanB")

57、类似时间控件,不能手到输入的文本档
   1)手工添加对象,
   2).object.value="2008-4-12"


TAG: QTP

 

评分:0

我来说两句

Open Toolbar