qtp25种常用技巧_第1页
qtp25种常用技巧_第2页
qtp25种常用技巧_第3页
qtp25种常用技巧_第4页
qtp25种常用技巧_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、QTP相关的25个小技巧1、Q:runaction后面能不能接变量(动态调用action,所以从数据库取数据做action名字了,但是调用总是找不到)?A:脚本中原有RunAction "testbase case1", oneIteration把引号中的内容放到Global表中的第22行,然后将代码修改为:datatable.getsheet("Global"datatable.setcurrentrow(22strLogin=DataTable("ActionName","Global"RunAction st

2、rLogin, oneIterationhelp中也有相关帮助,如:SyntaxRunAction ActionName, IterationMode , IterationRange , ParametersActionName : String : The name of the action:中调用VB函数的问题(用VBscrpt写了一些测试脚本需要的几个通用函数,有没有办法可以用类似include的方式进行调用,而不需要每次都把这些函数Copy到新的脚本中?A:程序开头加上ExecuteFile “.projectDeVariable.vbs”:QTP如何做回归测试(300多个Test

3、Case,TD是否可以管理 ?A:TD可以实现,可以生成测试集,一个测试集可以包含若干个测试脚本本身提供一个工具Test Batch Runner但是运行完没有报告。MI有另一个工具叫MTM(multitestmanager):qtp自动截图功能A:具体可参考此帖:http:5.Q:在QTP中如何设置使用别的浏览器(XP系统,用IE访问程序时,每次总提示屏蔽安装ActiveX插件,需要手动安装.但把这个过程录制到QTP后,回放一次是成功的。当我给某个输入框参数化了好多数据后,回放过程中,某些就会失败.可能有两个方面可以解决这问题1、每个动作设置延迟时间 2、设置为用别的浏览器。(失败的提示信息

4、是   object not visibleA:1.延迟可用WAIT X(X单位是秒)SystemUtil.Run “file” “params” “dir” “op'' “mode”QTP运行可执行文件的方法及其参数ps: 建议是用IE浏览器,或者IE内核浏览器做测试6.Q:checkpoint 检查网页,是否能实现只要网页出现乱码就返回错误报告?A:Text not displayed能解决问题关于 Text Checkpoint 的总结。1)Text Checkpoint 的检查部分分为三个部分。Checked Text 、Text Before 、T

5、ext After。在默认的情况下,Checked Text执行的是精确检查,其余两个部分执行的是模糊检查。Text Before(After检查的内容可以比实际的内容少。但是不能有和是实际内容不相符的地方,否则就失败。2 Exact match选项。如果选择了这个选项,三部分完全都进行精确检查。个人觉得和只检查checked Text部分没有区别。3 Text not displayed。这个选项本质上就是一个结果取反的过程。就是把检查的结果给反过来,把pass变成Fail,Fail变成pass。我觉得这样就很容易理解。7.Q:WSH的应用方法A:WSH 实际上是一个脚本语言的运行环境,它之

6、所以具备强大的功能,是在于其充分挖掘了脚本语言的潜力。因此,如果抛开脚本语言而空谈 WSH ,那实际上就没有了意义。而如果再展开来讲述脚本语言,显然就离开了今天的主题。在这种情况下,只好采取一种折衷的方法:给大家推荐几个脚本文件利用 WSH 执行任务的实例,希望大家能通过这些例子对 WSH 的使用有一个初步的认识。脚本文件的编写十分方便,你可以选用任意一个文字编辑软件进行编写,编写完成后,只需将它保存为 WSH 所支持的文件名就可以了(如.js 文件和.vbs 文件)。最常用的就是记事本编辑器,下面的实例都是以它作为工具编写的。打开记事本编辑器,在上面编写如下内容:Wscrpt.Echo(“走

7、近 WSH”将它保存为以 .vbs 或 .js 为后缀名(千万不要写成了 .txt)的文件并退出记事本。双击执行这个文件。这一次,我们要利用 WSH 完成一次创建十个文件夹的工作。代码如下:dim objdirset bjdir=wscrpt.createobject("scrpting.filesystemobject"for k=1 to 10anewfolder="c:chapter" & kobjdir.createfolder(anewfoldernext同样,将它存为 .vbs 文件并退出。运行后,我们会发现,C 盘根目录下一次性多出

8、了十个新文件夹。最后,再举一个在服务器上的运用。下面的代码将帮助你重新启动指定的 IIS 服务:' define a constant for stopped servicesConst ADS_SERVICE_STOPPED = 1' get an ADSI object for a computerSet bjComputer = GetObject("WinNT:/MYCOMPUTER,computer"' get an object for a serviceSet bjService = objComputer.GetObject(&quo

9、t;Service","MYSERVICE"' check to see if the service is stoppedIf (objService.Status = ADS_SERVICE_STOPPED ThenEnd If将它以 startsvc.vbs 为名保存在 C: 盘根目录。并通过如下命令执行:Cscrpt C:STARTSVC.VBS。运行后,经你指定的 IIS 服务项将被重新开启。其实,在 Windows 的 samples 目录下,有个 WSH 文件夹,那里面有不少很具代表性的 .vbs 和. js 脚本文件。此外,利用 WSH 还

10、可以自己编写脚本文件来提高网络管理方面的效率。8.Q;从EXCEL中导出数据进行测试datatable.AddSheet("51sheet"datatable.ImportSheet "f:test.xls","testsheet","51sheet"Dim i,RowCount '定义两个变量i=0RowCount=datatable.GetSheet("51sheet".GetRowCount '设置RowCount等于51sheet中的行数。msgbox RowCountD

11、o while i i=i+1 ' 第一次进入循环,执行这句后, i=1 'datatable.getsheet("51sheet".setcurrentrow(i   这句话被我注释掉了,正确的写法应该是下面这样,分开写。datatable.getsheet("51sheet" datatable.setcurrentrow(i'执行过上面两句后,CurrentRow是第一行。tempData=DataTable.GetSheet("51sheet".GetParameter("

12、Name".Value'现在,我们调用msgbox看看下面这种调用方法得到的是什么值?没错,是第一行的值,下一次循环呢?'得到的是第二行的值么?msgbox "GetParameter-Name:"&tempData '这里弹出我们要看的值。'下面我们用另外一种方法来得到。msgbox "GetParameter-i:"&DataTable.GetSheet("51sheet".GetParameter(1.Value '这里我用GetParameter(1去得到she

13、et中第一列的值。loop9.Q:关于dtGlobalsheet与dtGlobalsheet1 dtGlobalsheet只有一个,它的index值比较特殊,它有两个index值,一个是1还有一个是内置的默认的1000。你可以用1或者1000去引用它都是正确的。当然了,如果你用dtGlobalsheet来引用它也是正确的。这个sheet的Name叫做"Global"。注意:SheetName是区分大小写的。2 dtLocalsheet可以用index:1001来引用,当然,也可以用2来引用。至于其它自定义的sheet嘛,你就只能用index:3来引用了。它没有内置的默认的类

14、似前两个那样的index值。3 datatable这个对象只有一个。就是所有sheet的集合。或许你把它理解为excel文件比较好。dtsheet呢?就是其中的每个sheet。所不同的就是MI为他们做了一些默认值。在我们的应用中,可能会有多个action,如:actiion1,actiion2,actiion3这些action也分别对应有各自默认的LoaclSheet.即:actiion1,actiion2,actiion3。10、Q:移动当前位置的行For i=1   to 3datatable.getsheet("Global" datatable.

15、setcurrentrow(iDataTable("C","Global" = DataTable("nodename","Global" 把表Global中的nodename字段中的内容取出来。Next11、Q:如何能记录到页面的校验码?(Output value能不能得到web页面的校验码,一般的校验码是由图片随即生成的 ,用QTP怎么录脚本在登陆前得到校验码并输入到校验码一栏A:1一个很简单的方法:测试时叫开发屏蔽掉检验码的功能后,再录制脚本。检验码的功能可以手工很简单测试出来。2想得到图片的校验码,唯一的方

16、法就是跟程序员拿程序,然后自己在脚本里面写FUCNTION!其它就要手动输入了!12、Q:QTP正则表达式的帮助A: QTP regular expression usage.doc (到Google里勾吧)13、自动测试实施计划1分析实施自动化测试可能存在的风险:就是决定是否实施, 用成本 时间 效果 。2制定实施的时机:也就是在什么阶段3研究所要测试的功能 性能4分析在测试中可能遇到的问题 和困难5预估所需要的人时和相应的硬件7确定负责人员和相关测试人员6制定详细的测试计划 方案7最后是执行计划14、Q:一个Action里如何调用在另一个Action中定义的函数、过程(或变量、常量)例如:

17、-'Action_APublic strURL. .Function QueryList(. . .End Function-'Action_B'如何调用 QueryList函数和strURLA:1可以把这些变量和Function放在vbs文件作为resource文件共享,在每个Action中添加该文件.如果function中出现控件调用,那么必须确保该控件在相应的Action的object repository中是存在的.2定义一个可被调用的ACTION里面唯一的放一个FUNCTION15、Q:如何管理QTP的源代码?(QTP生成的源代码比较多,而且和环境控件都有关,

18、假如需要多人同时开发, 请问如何管理源代码?A: 一个是代码你可以通过vss,cvs等来进行管理一个是通过td或者qc的基于用例的代码管理其实第一种方法是基于版本控制来进行的,第二种方法是基于用例管理进行的角度不同,管理方法也不同,不过团队协作需要的大家分工明确,进度控制。代码管理可以借鉴开发的方法。16、Q:脚本不能回放,IE中的AtiveX设置有问题?A: TOOL-OPTIONS-Ative screen然后点开advanced.,把LOAD   ACTIVEX CONTROLS打勾TOOL-OPTIONS-Ative screen然后点开advanced.,run

19、scrpts->disabled!17、Q: 如何参数化linkBrowser("Browser".Page("Page".SyncBrowser("Browser".Navigate ""Browser("Browser".Page("51Testing软件测试论坛-软件测试,软件质量工程师".SyncSet tags=Browser("Browser".Page("51Testing软件测试论坛-软件测试,软件质量工程师".O

20、bject.linksDim i,j, arr(i=0For Each element in tagsIf Ucase(element.tagname="A" and left(element.InnerText,1="" ThenReDim Preserve arr(i+1       arr(i=element.InnerTexti=i+1end ifNextFor j=0 to iBrowser("Browser".Page("51Testing软件测试论坛-

21、软件测试,软件质量工程师".Link(" 版主讨论区 ".SetTOProperty "Text",arr(j         Browser("Browser".Page("51Testing软件测试论坛-软件测试,软件质量工程师".Link(" 版主讨论区 ".ClickBrowser("Browser".BackNext这段代码先是打开一个空的页面,然后输入url.到达论坛首页。然

22、后得到所有版面的名称,也就是link的名称,存到数组里面。然后使用SetTOProperty更换录制时候录下的link的属性,这时候再click。18、Q:QTP 在Debug狀態,在Export View 區域不能寫入任何東西A: 如果你的目的是在debug过程中修改已执行过的命令,可以在Debug view的Command中执行命令,如重新执行已经执行过的命令,修改变量的值等等。如:Window("Flight Reservation".WinEdit("Name:".Set "51testing"已经执行,如果现在想修改“51t

23、esting”为“testing”,可以在command中执行Window("Flight Reservation".WinEdit("Name:".Set "testing"19、Q:动态变化值如何获取:VAL=Browser("欢迎使用我的工作台".Page("欢迎使用我的工作台".Frame("managePlace_7".WebRadioGroup("userAccountId_0".GetROProperty("Value"B

24、rowser("欢迎使用我的工作台".Page("欢迎使用我的工作台".Frame("managePlace_7".WebRadioGroup("userAccountId_0".select val20、Q:如何一一获得Table中 某栏 link 的 text?:通过上面link 的学习. 我终于融会贯通,完成了我的问题: 与大家共享:Browser("Login".Page("Page".Frame("contents".ViewLink("

25、;treeview".Image("Tplus".ClickBrowser("Login".Page("Page".Frame("contents".ViewLink("treeview".Image("Tplus_2".ClickBrowser("Login".Page("Page".Frame("contents".ViewLink("treeview".Link("开课设

26、置".ClickBrowser("Login".Page("Page".Frame("main".WebList("drpStatus".Select "任意"Browser("Login".Page("Page".Frame("main".WebButton("查找".ClickBrowser("Login".Page("Page".SyncDim finded,f

27、indCode,Nowout'define a constrat for findfindCode = 110901 finded = falseFunction MaxPage(pageString'msgbox pageStringDim ilen,i,jilen = len(pageStringi=ilenWhile i>0        j = mid(pageString,i,1   'msgbox j   If instr("123456789

28、",j>0 Then          MaxPage = j   'msgbox MaxPage   Exit function   End If   i=i-1WendEnd Function  Dim trowcount,maxptrowcount = Browser("Login".Page("Page".Frame("main_8&q

29、uot;.WebTable("开课代码".RowCountmsgbox "Rowcount: "&trowcountNowout = Browser("Login".Page("Page".Frame("main_8".WebTable("开课代码".GetCellData(trowcount,1Nowout = trim(Nowoutmaxp = MaxPage(Nowoutmsgbox "max page: "& maxpDim now

30、Page,checkidFor nowPage = 1 to maxp   If   finded Then   Exit forEnd If   ' link to the 当前所需page   If nowpage>1 ThenBrowser("Login".Page("Page".Frame("main_8".Link("2".SetTOProperty "Text",&quo

31、t;"&nowpage&""Browser("Login".Page("Page".Frame("main_8".Link("2".ClickBrowser("Login".Page("Page".Syncend if   ' Get the rowcount of table in now pagetrowcount = Browser("Login".Page("Pag

32、e".Frame("main_8".WebTable("开课代码".RowCountmsgbox "Rowcount: "&trowcount   'link every record in the table of the pagefor i = 2 to trowcount   - 2Nowout = Browser("Login".Page("Page".Frame("main_8".WebTable(&

33、quot;开课代码".GetCellData(i,2'msgbox i&": "&Nowoutcheckid = "dgCourse:_ctl" &(i+1& ":_ctl0" Browser("Login".Page("Page".Frame("main_8".WebCheckBox("dgCourse:_ctl3:_ctl0".SetTOProperty "name",checkid

34、Browser("Login".Page("Page".Frame("main_8".WebCheckBox("dgCourse:_ctl3:_ctl0".Set "ON"Browser("Login".Page("Page".Frame("main_8".Link("0901".SetTOProperty "Text",NowoutBrowser("Login".Page(&

35、quot;Page".Frame("main_8".Link("0901".ClickBrowser("开课设置详细信息".Page("开课设置详细信息".Sync'wait(1msgbox "begun"msgbox findCodemsgbox Nowoutmsgbox "finished"If   trim(findCode = trim(Nowout Then      

36、 finded = truemsgbox "find is ok!"wait(2Exit forEnd IfBrowser("开课设置详细信息".CloseBrowser("Login".Page("Page".Sync   nextNext21、Q:网页下拉框的选择A:For i =1 to 10RandomizeIndexNum=Int(10 - 5 + 1 * Rnd + 5Browser("Mercury Tours".Page("Find Flights_

37、2".WebList("arrive".Select "#"&IndexNumwait(3NextSub ChildObjects_Example('The following example uses the ChildObjects method to find all the'list objects on a Web page, and then to select an item in each list.Set Desc = Descrption.Create(oDesc("micclass".Value = "WebList"Set Lists = Browser("Mercury Interactive".Page("Mercury Interactive".ChildObjects(oDescNumberOfLists = Lists.Count(For i = 0 To NumberOfLists - 1Lists(i.Selec

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论