51Testing软件测试论坛

标题: 怎样使低级录制中的Window中的值可以参数化 [打印本页]

作者: wmy0102    时间: 2010-9-3 17:04
标题: 怎样使低级录制中的Window中的值可以参数化
求助:如下面的一个录制的动作,怎样使Window中的值参数化,或者是根据登陆的分公司显示不同的值?
Window("欢迎您:J9871_苏娟(山东分公司) 登录时间:201").WinObject("Internet Explorer_Server").Click 280,79
前面有一个登陆的动作,用不同的分公司用户登陆,页面的title用户名和分公司显示的都不同,录制一个脚本后,使用另外一个分公司的用户登陆的话,运行时报错如下:
Cannot identify the object "欢迎您:J9871_苏娟(山东分公司) 登录时间:201" (of class Window). Verify that this object's properties match an object currently displayed in your application.

Line (14): "Window("欢迎您:J9871_苏娟(山东分公司) 登录时间:201").Activate".

Tip: If the objects in your application have changed, the Maintenance Run Mode can
help you identify and update your steps and/or the objects in your repository.
作者: TIB    时间: 2010-9-3 17:37
Window("欢迎您:J9871_苏娟(山东分公司) 登录时间:201")
这个窗口对象是动态变化的,用一下描述性编程或者在对象库中用编辑一下对象属性,用正则表达式匹配一下
作者: blizzardlyk    时间: 2010-9-3 21:04
window()中的字符串,对应的是对象库中的对象名。
因此,这个字符串是不可以动态的。
考虑到这个对象的属性是动态的,那么需要在对象库中,对相应的属性做参数化。
比较普遍的是TEXT属性。可以采用正则表达式来模糊匹配。
如果这个值可以在之前的测试过程中获取,那么建议使用描述性编程的方式来获取对象,而放弃QTP的原始对象库。
作者: kavensyw    时间: 2010-9-3 23:12
不管是什么录制,只要是添加了对象库的,肯定也是通过相应对象的属性来识别的
如果动态变化,参数化或用正则表达式替换即可
作者: sterson    时间: 2010-9-4 10:41
1,如果这个title事先可以获取,那么就简单些
直接获取它的属性即可:winTitle=xxxxx.getproterty("title")
2,如果这个title无法事先获取,那么可以用参数化来解决,或是者正则表达式来解决
winTitle=datatable  参数化处理
winTitle=regRul()    正则处理,正则的函数regRul需要你自己写。。呵呵
If Dialog("text:=" & winTitle).WinButton("text:=确定").Exist(2) Then
        Dialog("text:=" & winTitle).WinButton("text:=确定").Click
else
      '没有弹出欢迎窗口
      .........
End If




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2