软件测试工作中使用QTP的总结_第1页
软件测试工作中使用QTP的总结_第2页
软件测试工作中使用QTP的总结_第3页
软件测试工作中使用QTP的总结_第4页
软件测试工作中使用QTP的总结_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

1、软件测试工作中使用QTP的总结-转上一篇 / 下一篇  2009-08-18 13:26:28 / 个人分类:测试 查看( 68 ) / 评论( 1 ) / 评分( 1 / 0 ) 工具软件一段时间不用就容易手生,有个备份整理以后复习都事半功倍。之前就打算好好弄一下一直拖着没动笔。网上QTP的学习资料大把大把,那些基础的理论东西看过就过了,实践才是王道,操作几个小时胜过看一天的说明文档。这里列一些我在用QTP时遇到印象比较深刻的问题和解决方案,其他的小问题属于QTP熟练操作的范畴就不赘述了。因为项目需要接触了差不多三个月的QTP,自知离QTP高手还有段距离,学无止尽,有学习QTP的朋

2、友欢迎发表高见大家互相进步1、QTP自带函数print调试代码的时候一般习惯用Debug或者Msgbox函数。监视变量运行时的值用Msgbox,个人感觉不方便的一点就是每次在msgbox窗口弹出来后,脚本会暂停执行,等到鼠标点确定后窗口才会关闭继续运行后续脚本,真的很烦,做自动化测试的时候我真的是已经懒到不愿意动一根手指头。某天无意发现QTP自带的函数print也可以实现查看变量信息,窗口是非模式的,运行时变量值在 QuickTest Print Log窗口上输出但脚本不用停下来等,而且可以在一个session运行完了之后查看所有需要监视的变量值。Eg:Dim pp=Browser("

3、;xx").page.("xx").webedit("object_name").GetROProperty("value")print p2、calender控件一般日期格式字段是同时支持手填日期格式的text field和用鼠标点日历控件选择。但是在DMPOD系统里发现部分日期格式的字段居然disable了用户手动输入的属性,只能靠点日历控件来选择日期。结果录到的脚本全变成了img.click,无法回放。查了很久突然某一天找到了办法,绕过这个控件,强制转换它的属性值。Eg:Dim var_objectSet var_ob

4、ject=Browser("xx").page("xx").webedit("calendar_name").ObjectVar_object.readonly=falseBrowser("xx").page("xx").webedit("calendar_name").set "4/24/2009"3、homepage menu曾经困扰了我很久。Homepage dropdown menu 需要鼠标移动到主菜单名上才会显示子菜单目录,click子菜单目录

5、进入页面。QTP总是无法捕捉到鼠标移动带出子菜单目录这个操作,解决办是用mouseover。Eg:Browser("xx").page("xx").webelment("homepage menu name").FireEvent "onMouseOver"Browser("xx").page("xx").webelment("sub menu name").Click4、自定义checkpoint在页面提交保存后,自定义设置一个检查点,通过判断某个变量值

6、是否满足预期,如果是,则保存成功,如果不是则保存失败。Eg:If Browser("xx").page.("xx").webedit("object_name").GetROProperty("value")="AA" ThenReporter.ReportEvent micPass,"AA checkpoint","page is saved successfully"Else Reporter.ReportEvent micFail,"AA

7、checkpoint","page is not saved successfully"End If5、编程性描述语言识别对象刚开始一段时间,一直不知道QTP除了用对象库识别对象外,还可以用编程性描述语言。后来查了网上的资料才明白过来。第一种方法:Browser("CreationTime:=0").Page("index:=1").WebEdit("name:=" & edit).Set "ha"我没有尝试过,总感觉不如对象库来的方便,在对象库中可以直接选择和修改用来识别对象

8、的属性,以及highlight object等功能。第二种方法:碰到过一个Case是,页面上table A里的checkbox元素数量每次运行时都是不相同的,随着页面上另一个对象B的值而改变,对象B的值又是参数化的,最后造成checkbox数量运行前无法预知。操作时又需要每次都选上所有的checkbox。最后用这种识别对象方法可以顺利实现。Public function SelectAllCheckBox()Set NewObject = Description.Create '创建满足下面三个条件的对象集NewObject("micclass").value =&

9、quot;WebCheckBox"NewObject("html tag").value="INPUT"NewObject("class").value = "checkBox_class"Set NewObjects = Browser("xx").Page("xx").ChildObjects(NewObject) '实际运行时的对象Numbers = NewObjects.Count 'checkbox的个数For i = 0 to NewOb

10、jects.count 1 '循环NewObjects(i).Set "ON" '每一个checkbox都set onNextEnd Function6、相对路径Setting: Tool-option-folder经常有action调用别的test里的action或者外部vbs文件,访问功能库和环境变量,这时使用相对路径可以保存有效的路径信息,提高了脚本可移植性。因为脚本文件是需要复制到别的机器共享给其他同事用的。7、正则表达式对象库里对每个对象都可以设置是否用正则表达式来参数化识别。脚本里也可以用。当时的case是,页面提交保存完了会自动生成一个文档号,

11、文档号是需要输出到data table里,但是那个字段developer在设计的时候居然用了一个webelment的类而且字段值居然是整个table的name,如“xyz ABC20090101”,我只要后面的文档号前面的“xyz”是多余的,需要拿到这个对象值后转换成正确的字符串格式才能输出到data table里。Eg:Function regEXfun(patrn,strng)Dim regEX,Match,MatchesSet regEX = New RegExpregEX.Pattern=patrnregEX.IgnoreCase=FalseSet Matches =regEX.Exe

12、cute(strng)Set Match=Matches(0)RetStr=Match.valueregEXfun=RetStrEnd FunctionDim preNO,newNOpreNO=Browser("xx").Page("xx").WebElement("NO").GetROProperty("innertext")newNO=regEXfun("ABC.",preNO) '虽然每次NO都不一样,但是格式是固定的:字符串长度总是11位,以ABC开始,后面的数字是随机,所以用A

13、BC来匹配字符串DataTable.Value("NO",dtGlobalSheet)=newNO8、密码如果登录页面的密码数据来源是data table,那么要提前准备密码。显然只能用明文,比如123456,但是QTP录制输入密码时自动生成的脚本是用SetSecure的方法生成一大串密文,如果这样每次改密码的时候都要用密文到data table里,很郁闷,这种case时只要手动把SetSecure改为Set就OK啦9、waitproperty在用QTP的过程中,有时因为要等待某个对象的值出现,加上wait()方法.但是wait里的时间参数,是根据经验估计出来的, 这个对象每次运行时可能需要load的时间不一样,有时候9秒有时候3秒,只好设置成wait(10),让QTP等10秒,但是如果对象在10秒内已经

温馨提示

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

评论

0/150

提交评论