标题: 怎样使低级录制中的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