QTP的编程技术总结
- 格式:doc
- 大小:197.00 KB
- 文档页数:13
QTP的编程技术总结1.代码不区分大小写2.字符串长度固定的验证脚本测试3.关键词描述性编程Descriptive programming 功能测试functional test 专家视图expert view 关键字视图keyword view 对象模型object model 运行时对象run-time object 测试对象test object4.Web objects的方法和示例5.获取单元格中的值This text=browser(…).page(…).frame(…).webtable(“sample”).getcelldata(2,1)6.获取图片的名称Objectname=browser(….).page(…).image(“find”).getproperty(“name”)7.检查某个对象是否存在,如果存在弹出对话框说明对象存在If browsers(“browser”).page(“page”).applet(“login.html”).javaedit(“username”).exist then Msgbox(“the object exists”)End ifQTP在对象库中根据这个对象的名称和父对象来查找对象,并使用为这个测试对象存储的测试对象描述,在网站或应用程序中标示改对象。
8.示例:运用对象Browser(“yahoo!”).page(“yahoo!mail—the best”).webedit(“login”).set “xxx”或者我们也调用一些方法,获取该对象在运行时的对象名Browser(“yahoo!”).page(“yahoo!mail-the best”).webedit(“login”).getroproperty(“name”)9.动态对象当对象库中没有此对象时,我们称之为动态对象,我们要引用这些动态对象时可通过对象属性编码到测试脚本里来动态识别对象,这就是我们通常意义称为描述性编程。
具体操作中,我们只需要为QTP提供对象的一组属性和值,这样QTP就可以来识别相应的对象并对其进行操作。
这相当于,告诉QTP要识别对象的一些关键特性,根据这些特性QTP就可以一一匹配然后识别出来这个对象。
10.编程实例2Dim ii=0while(window(“text:=yahoo!-microsoftinternet”.index:=”&i).exit)window(“text:=yahoo!-microsoftinternet explorer”,”index:=”&i).closei=i+1wend11.描述性编程语句在具体实现中,我们有两种类型的descriptive programming方法。
可以列出直接在测试语句中描述对象的属性和值的集合;或者向description对象中添加属性和值的集合,然后在语句中输入description对象的名称:1)直接在语句中输入编程描述通过多个指定描述对象的property:=value,可以直接在语句中描述对象,这是最直接有效的方法。
常规语法为:Testobject(“propertyname1:=propertyvalue1”,”…”,”propertynameX:=propertyvalue”)Testobject-------测试对象的类Propertyname:=propertvalue—测试对象的属性及其值。
各个property:=value对之间应用逗号和引号分开。
实例:browser(“mercury tours”)..page(“mercury tours”).webedit(“name:=author”,index:=3”).set ”mark ”2)也可以从描述中的特定位置(从page对象描述开始)开始使用descriptive programmingBrowser(“mercury tours”).page(“title:=mercury tours”).webedit(“name:=author”,”index:=3”).set”jojo”多次使用相同的descriptive programming,则可以将创建的对象赋值给变量实例:Set winhyper=window(“text:=hypersna”)Winhyper.winbutton(“caption:=日期”).clickWinhyper.winbutton(“caption:=日期”).clickWinhyper.winbutton(“caption:=确定”).click如果使用了VBSCRIPT里面的with语句,还可以简化为以下代码;With windows(”text:=hypersna”).winbutton(“caption:=日期”).click.winbutton(“caption:=日期”).click.winbutton(“caption:=确定”).clickEnd with12.编程语言的实例Counter=0For i=0 to (intpassnum)Browser(“find a flight”).page(“book a flight:”).webedit(“name:=passfirst”&i).set“michael”Browser(“find a flight:”).page(“book a filght:”).webedit(“name:=passlast”&i”).set “wang”Counter=counter+1Next13.使用description对象使用description对象可以返回包含一组property对象的properties集合对象。
Property对象由属性名和值组成。
然后,可以在语句中指定用返回的properties集合代替对象名。
(每个property对象都包含一个属性名和值)要创建properties集合,可以使用以下语法输入description.create语句:Set mydescription=description.create()创建Properties 对象(例如,以上示例中的MyDescription)后,就可以输入语句,以便在运行会话期间在Properties 对象中添加、编辑、删除或检索属性和值。
这样,就可以在运行会话期间,使用动态方法确定哪个属性以及多少个属性应包含在对象描述中。
在Properties 集合中填充一组Property 对象(属性和值)后,可以在测试语句中指定用Properties 对象代替对象名。
例如,假设我们需要完成以下一个操作:Window("Error").WinButton("text:=OK", "index:=1").Click我们可以通过Description对象来实现同样的功能,参加下面的代码:Set MyDescription = Description.Create()MyDescription("text").Value = "OK"MyDescription("index").Value = 1Window("Error").WinButton(MyDescription).ClickSet MyDescription = Nothing14.描述性编程2当我们并不想QTP依赖对象库来识别对象时,我们就可以借用描述性编程的方式,把对象的属性及属性值直接搬到代码中去,让QTP直接通过脚本中的这些属性及属性值就能识别到这个对象,而不必再去匹配对象库。
总的来说,如果您希望在未存储在对象库中的对象执行操作时,则这种编程描述是非常用的。
或者还可以使用编程描述在具有木屑相同属性的多个对象上执行相同的操作,或者在其属性与运行会话期间动态确定的描述相匹配的对象上执行操作。
由于参数化的时候受到对象库的制约,所以也采用了描述性编程的形式,让要参数化的对象不再受到对象库的制约。
下面的登录页面可以把对象库删除使用。
Dialog("text:=Login").WinEdit("attached text:=Agent Name:").Set "mercury"Dialog("text:=Login").WinEdit("attached text:=Password:").SetSecure"4414d23c42046da1ea3a895f1518b9c476b2b225"Dialog("text:=Login").WinButton("text:=OK").ClickWindow("regexpwndtitle:=Flight Reservation").close学习:object.attachedtextarea[=val ue]值得注意的是:如果父对象用描述性编程表示了,那么后面的对象都要用描述编程表示了。
因为子对象是依靠父对象存在的,父对象从对象库中删除了,那么后面的子对象也同时被删除了,反过来子对象的删除就不影响父对象。
接下来我们是对函数的学习。
15.ActiveX 标示属性16.Acxbutton 标示属性17.AcxCalendar 标识属性日历控件18.AcxCheckBox 标识属性复选按钮控件19.AcxcomboBOX 标示属性20.Acxedit 标示属性编辑框21.Acxradiobuttom 单选按钮的标示属性22.ACXtable 标示属性23.Datatable注意点Browser("Browser").Page("Page").WebEdit("j_username").Set DataTable("A", GlobalSheet) Browser("Browser").Page("Page").WebEdit("j_password").SetSecure datatable("B",globalsheet)。