QTP 中link参数化最优方法

上一篇 / 下一篇  2008-10-22 11:56:06 / 个人分类:qtp学习

MILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">这段时间有空学习了QTP,学习过程中遇到了一个问题,就是把链接的内容参数化。.

需求:用户管理模块,创建多个组织,并在其组织下创建用户(组织以树形显示,要在组织树中点击这个组织,才能添加用户)。设计一个脚本,自动化测试回归测试)(检查点等等的设置在此略,本次重点讲参数化)

分析需求:首先,从需求来看有两个功能点要测试,一是组织创建,第二用户创建。  并且两者之间有制约,要在组织下创建用户。

设计脚本:首先我们可以最先想到的是,录制两个脚本,一个是创建组织,一个是在已创建的组织下创建用户,分别在两个脚本中,对组织名、用户名参数化。。。

但根据以上所说的测试情况,不能完全实现自动化,仍需要手工来修改脚本。为什么要这样说呢:

1.       首先,录制一个创建组织的脚本,可以设置组织名称参数化;

2.       在创建用户的脚本中,我们要选择已创建的组织,再创建用户(这就是制约之处,组织是动态的;如果是静态的,就只能实现在一个组织下创建用户了。测试用例重复,无实际意义。);

3.       我们要在创建用户的脚本中,手工将已创建的组织添加到参数化表中。

 这样的脚本从执行效率上来看,还不如手工来的快。

所以我设想用一个脚本来实现,这就有一个问题,组织的参数化,保存组织时参数化实现没问题,但要点击这个组织名称(即链接对象)的参数化对我这个新手来说不容易。

录制脚本如下:

Browser("欢迎您登录Xxxx").Page("欢迎您登录Xxxx").WebEdit("j_username").Set "admin"
Browser("
欢迎您登录Xxxx").Page("欢迎您登录Xxxx").WebEdit("j_password").SetSecure "11"
Browser("
欢迎您登录Xxxx").Page("欢迎您登录Xxxx").WebEdit("j_password").Submit
Browser("
欢迎您登录Xxxx").Page("Xxxx 1.0").Frame("tree_2").Link("组织和用户管理").Click
Browser("
欢迎您登录Xxxx").Page("Xxxx 1.0").Frame("frmRight_2").Link("子部门列表").Click
Browser("
欢迎您登录Xxxx").Page("Xxxx 1.0").Frame("frmRight_3").WebButton("新建").Click
Browser("
欢迎您登录Xxxx").Page("Xxxx 1.0").Frame("x_open_frame_3").WebEdit("group.name").Set "北京公司"    //创建组织
Browser("
欢迎您登录Xxxx").Page("Xxxx 1.0").Frame("x_open_frame_3").WebButton("保存").Click
Browser("
欢迎您登录Xxxx").Page("Xxxx 1.0").Frame("frmLeft").Link("北京公司").Click               //点击组织名
Browser("欢迎您登录Xxxx").Page("Xxxx 1.0").Frame("frmRight_4").WebButton("新建").Click
Browser("
欢迎您登录Xxxx").Page("Xxxx 1.0").Frame("x_open_frame_4").WebEdit("user.loginname").Set "李四"           //创建用户
Browser("欢迎您登录Xxxx").Page("Xxxx 1.0").Frame("x_open_frame_4").WebButton("保存").Click
Browser("
欢迎您登录Xxxx").Page("Xxxx 1.0").Sync
Browser("
欢迎您登录Xxxx").Close

从脚本来看,我们要把组织名称“北京公司”参数化,新建时没问题,但Link("北京公司")怎么参数化呢?在,网上找了资料,要用SetTOProperty来修改对象的值,但要用循环,创建用户部分的脚本如下:

Browser("欢迎您登录Xxxx").Page("欢迎您登录Xxxx").WebEdit("j_username").Set "admin"
Browser("
欢迎您登录Xxxx").Page("欢迎您登录Xxxx").WebEdit("j_password").SetSecure "11"
Browser("
欢迎您登录Xxxx").Page("欢迎您登录Xxxx").WebEdit("j_password").Submit
Browser("
欢迎您登录Xxxx").Page("Xxxx 1.0").Frame("tree_2").Link("组织和用户管理").Click

Dim i,b

For i=1 To 2

   Select Case i

      Case 1 b="上海公司"

     Case 2 b="天津公司"

   End Select

Browser("欢迎您登录Xxxx").Page("Xxxx 1.0").Frame("frmLeft").Link("北京公司").SetTOProperty "Text",b

//添加此行,用SetTOProperty来修改Link内容的值,此处引用了变量b的值

Browser("欢迎您登录Xxxx").Page("Xxxx 1.0").Frame("frmLeft").Link("北京公司").Click

Next

Browser("欢迎您登录Xxxx").Page("Xxxx 1.0").Sync

Browser("欢迎您登录Xxxx").Close

虽然这样也可以实现向多个组织下创建用户,但组织名也是提前手工添加到脚本中去的,另外多个组织下创建多个用户时,循环也会有问题。

我打算不用循环了,我就观注SetTOProperty,我想我直接用它来引用组织名参数化表中的数据。经过多次试验,终于成功。

完整版脚本如下:

Browser("欢迎您登录Xxxx").Page("欢迎您登录Xxxx").WebEdit("j_username").Set "admin"
Browser("
欢迎您登录Xxxx").Page("欢迎您登录Xxxx").WebEdit("j_password").SetSecure "48fe9e6c134bc16748107d69ac01"
Browser("
欢迎您登录Xxxx").Page("欢迎您登录Xxxx").WebEdit("j_password").Submit
Browser("
欢迎您登录Xxxx").Page("Xxxx 1.0").Frame("topFrame").WebTable("系统管理").Click
Browser("
欢迎您登录Xxxx").Page("Xxxx 1.0").Frame("tree").Link("用户管理").Click
Browser("
欢迎您登录Xxxx").Page("Xxxx 1.0").Frame("tree_2").Link("组织和用户管理").Click
Browser("
欢迎您登录Xxxx").Page("Xxxx 1.0").Frame("frmRight_2").Link("子部门列表").Click
Browser("
欢迎您登录Xxxx").Page("Xxxx 1.0").Frame("frmRight_3").WebButton("新建").Click
Browser("
欢迎您登录Xxxx").Page("Xxxx 1.0").Frame("x_open_frame_3").WebEdit("group.name").Set DataTable("bumen", dtGlobalSheet)              //对组织参数化,存在表“bumen”中
Browser("欢迎您登录Xxxx").Page("Xxxx 1.0").Frame("x_open_frame_3").WebButton("保存").Click
Browser("
欢迎您登录Xxxx").Page("Xxxx 1.0").Frame("frmLeft").Link("北京公司").SetTOProperty "text",DataTable("bumen", dtGlobalSheet)                 //SetTOProperty引用表“bumen”中的数据, "text"是对象中的属性,其后的内容是属性的值,现在我们把属性的值参数化了,也不用创建变量了。
Browser("欢迎您登录Xxxx").Page("Xxxx 1.0").Frame("frmLeft").Link("北京公司").Click
Browser("
欢迎您登录Xxxx").Page("Xxxx 1.0").Frame("frmRight_4").WebButton("新建").Click
Browser("
欢迎您登录Xxxx").Page("Xxxx 1.0").Frame("x_open_frame_4").WebEdit("user.loginname").Set DataTable("user", dtGlobalSheet)

//用户参数化
Browser("
欢迎您登录Xxxx").Page("Xxxx 1.0").Frame("x_open_frame_4").WebButton("保存").Click
Browser("
欢迎您登录Xxxx").Page("Xxxx 1.0").Sync
Browser("
欢迎您登录Xxxx").Close

这样就可以实现,创建一个组织,并可在其下创建一个用户。实现了需求。在组织名称和用户名称的参数列表中添加多行数据,就可实现创建多个组织,并可分别在其下创建用户了。


TAG: link qtp QTP 参数化

linshan的个人空间 引用 删除 linshan   /   2010-09-16 12:45:55
引用 删除 yaya_1982   /   2008-10-22 17:12:24
5
引用 删除 yaya_1982   /   2008-10-22 17:11:56
写得不错!继续
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

我的栏目

日历

« 2011-06-10  
   1234
567891011
12131415161718
19202122232425
2627282930  

数据统计

  • 访问量: 2000
  • 日志数: 5
  • 建立时间: 2008-08-13
  • 更新时间: 2008-10-22

RSS订阅

Open Toolbar