51Testing软件测试论坛

标题: 这个对象怎么描述? [打印本页]

作者: cswalkman    时间: 2009-5-26 10:47
标题: 这个对象怎么描述?
各位朋友高手能不能给我指点一下,下面代码中的winEdit对象要怎么去描述

这是脚本的部分代码
Window("RSA Authentication Manager").WinMenu("Menu").Select "User;Add User..."
Window("RSA Authentication Manager").Window("Add User").WinEdit("Edit").Set "RA0ADWG006"
Window("RSA Authentication Manager").Window("Add User").WinEdit("Edit_2").Set "RA0ADWG006"
Window("RSA Authentication Manager").Window("Add User").WinEdit("Edit_3").Set "RA0ADWG006"
Window("RSA Authentication Manager").Window("Add User").WinEdit("Edit_4").Set "RA0ADWG006"

这是编辑框的截图:


Edit的属性:



他的name是以Edit_(随机数在变),windows id 也是随机在变的,这个要怎么描述啊.....


我把脚本也放上,有朋友帮我看看吗?谢谢!(xp3,qtp9.0)
作者: fei.ge    时间: 2009-5-26 11:45
【Window("RSA Authentication Manager").Window("Add User").WinEdit("Edit_2").Set "RA0ADWG006"】
<<<中的WinEdit这样描述不行么?
=======================================
set WinEdit1= Description.Create()
                 WinEdit1 ("name").Value = "Edit_2"
                 WinEdit1("nativeclass").Value = "Edit"
=======================================
作者: cswalkman    时间: 2009-5-26 13:06
标题: 回复 2# 的帖子
跑不过啊,主要是Edit_2这个值在变,第一个是Edit,第二、第三、第四就是以Edit_+数字在变化着,这怎么办?
作者: blizzardlyk    时间: 2009-5-26 13:39
属性参数化,"Edit_"&i
作者: cswalkman    时间: 2009-5-26 13:44
标题: 回复 4# 的帖子
i 怎么去捕获,麻烦能不能告知下!

不知道原代码

[ 本帖最后由 cswalkman 于 2009-5-26 13:46 编辑 ]
作者: fei.ge    时间: 2009-5-26 13:45
原帖由 cswalkman 于 2009-5-26 13:06 发表
跑不过啊,主要是Edit_2这个值在变,第一个是Edit,第二、第三、第四就是以Edit_+数字在变化着,这怎么办?


这个变化是有规律的么?有规律的按楼上的办法做做
作者: blizzardlyk    时间: 2009-5-26 13:56
既然你SET的值都是一样的 那先获取页面有多少个这样的WEBEDIT 然后做个FOR循环 用参数i来参数化每个控件,让QTP自动去识别
作者: cswalkman    时间: 2009-5-26 17:55
标题: 回复 7# 的帖子
能得到winedit的个数吗 呵呵
作者: blizzardlyk    时间: 2009-5-26 18:06
可以的,但是必须知道你这些WEBEDIT的需求是如何的? 是一个页面显示固定数量,还是由于其他某种流程操作得到的结果.
或者可以获取这个页面下的所有WEBEDIT类型的子对象数量,具体方法可见帮助文档关于childobject的方法.
作者: ls_721521    时间: 2009-5-26 18:07
标题: 回复 8# 的帖子
set WinEdit1= Description.Create()
      WinEdit1("name").Value = "Edit"
set all_object=Window("RSA Authentication Manager").Window("Add User").ChildObjects(WinEdit1)
      i=all_object.count()      'i就是这个个数。
作者: cswalkman    时间: 2009-5-27 11:32
谢谢楼上的朋

谢谢大家帮忙!!

[ 本帖最后由 cswalkman 于 2009-5-27 11:38 编辑 ]
作者: onlonely    时间: 2009-5-29 21:50
标题: 回复 11# 的帖子
楼上这个人的方法无法解决问题,
首先会有"Edit_2"是因为你的这几个输入框都是同一种控件,但是属性有变化.为了在程序中区别起来,QTP就自动给与后面额加数字表示
Window("RSA Authentication Manager").WinMenu("Menu").Select "User;Add User..."
Window("RSA Authentication Manager").Window("Add User").WinEdit("Edit").Set "RA0ADWG006"
Window("RSA Authentication Manager").Window("Add User").WinEdit("Edit_2").Set "RA0ADWG006"
Window("RSA Authentication Manager").Window("Add User").WinEdit("Edit_3").Set "RA0ADWG006"
Window("RSA Authentication Manager").Window("Add User").WinEdit("Edit_4").Set "RA0ADWG006"

其次winid并不一定是这个控件的关键属性,
你到tools--Object Identifcation
设置关键属性如附件所示,再次录制.看看还有没有winID了

只有属性变化在有规律的情况下,QTP才能识别,
所以我们必须把那些无规律变化的控件属性去除.

[ 本帖最后由 onlonely 于 2009-5-29 21:53 编辑 ]
作者: ls_721521    时间: 2009-5-30 08:23
标题: 回复 12# 的帖子
"""''''''"首先会有"Edit_2"是因为你的这几个输入框都是同一种控件,但是属性有变化.为了在程序中区别起来,QTP就自动给与后面额加数字表示'''''''''''''''''

同学,这不都说的很明白嘛,你都知道qtp是如何识别的了。。。上面的方法没错的。。。而且很常用
作者: cswalkman    时间: 2009-6-3 10:38
标题: 回复 12# 13# 的帖子
谢谢你们

先回复12#吧,在录制的时候关键属性里面有两个属性 attached text 和 nativeclass,辅助属性里面有 windows id, 实际录出来的只有后两个属性,因为实际情况我没法再去修改录制一遍,所以没法检验只留 attached text 后录制出的结果是什么!

13# ,你说的方法的确不可行,因为name在这个脚本里不是QTP识别的属性,所以没有办法用name去描述这个Edit对象,也就更没办法去用这个方法获得Edit个数了!

最有可能解决的方法是添加 x 和 y,所以我也就有了另一个疑问, abs_x 和x 有什么区别?
谢谢大家!
谢谢大家的帮组,希望大家继续说出自己的看法,大家一块儿学习!
作者: 欧阳    时间: 2009-6-5 11:28
标题: 回复 14# 的帖子
我这提供一个方法,你最好在对象库中把那个变化的webedit的windows id那个属性直接删除。因为他是变化的所以会引起一些错误 ,直接把它删除吧。对不对我也不清楚,不过我有试过这种情况,把变化的属性去掉就可以跑通的
作者: ls_721521    时间: 2009-6-5 11:53
标题: 回复 14# 的帖子
晕,我写的name只是一个方法,你可以用spy看看哪个属性可行,自己找啊。。
作者: cswalkman    时间: 2009-6-5 14:12
标题: 回复 15# 16# 的帖子
谢谢你们啊  16#   我理解你的意思了,只是它的属性都已经贴出来了,谢谢你

15#  你说的方法我去试了试  还是不行的  不过最后终于解决了  就是换低级录制模式

thanks everybody!




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