51Testing软件测试论坛

标题: 关于WR中GUI MAP的问题 [打印本页]

作者: haku    时间: 2007-8-23 15:50
标题: 关于WR中GUI MAP的问题
现在出现一个严重的问题
脚本每当运行到一EDTAttribute的地方就不动了
后来发现 用SPY看了下, 每次刷新个帐号 这个OBJECT的描述里的一格ID就变了
然后提示就是  不能发现对象 不好HIGHLIGHT
请问这个问题怎么解决
谢谢
作者: dionysus    时间: 2007-8-23 16:38
lz把这个控件的gui map描述放上来看下?
作者: haku    时间: 2007-8-24 10:06
谢谢斑竹

目前的描述是这样的:
CLASS   OBJECT
LABEL EDTATTRIBUTE
MSW_ID 132002
MSW_CLASS TEDIT

就说每次ID都变的 然后控件在回放时候就不能够识别
我已经用GUI CONFIGURE隐射过了 也把ID 这个选像除去  但这个结果没有被保存下来啊
而且就是没用 每次回放都显示不能够识别 下周就要交测试报告了 ...帮帮忙哟
作者: fengxueren    时间: 2007-8-24 10:09
把MSW_ID 132002这个属性删掉
如果还不能认出来
试着加个location或者index属性
作者: haku    时间: 2007-8-24 10:23
去掉后就不能够认出来了
具体的LOCATION INDEX该怎么写呢
不太清楚能否说明白点么?
作者: fengxueren    时间: 2007-8-24 10:37
在编程的时候,控件都会有一些属性
比如label,class等属性
其中有些属性是不会变化的,比如label,class等,这些是在开发的时候写死的了
而有些属性是可变的,比如常见的msw_id,这是程序运行的时候系统自动分配的

所以在录制脚本的时候,要尽量避免那些会变的属性,运用不会变的属性来定位这个控件

另外,在wr中,如果上述属性都不能唯一定位一个控件
还可以控件这个控件在界面上的位置(location)或者index来定位

比如你的第一界面上
有2个控件的属性都是
{
CLASS   OBJECT
LABEL EDTATTRIBUTE
MSW_CLASS TEDIT
}
那么,你可以把第一个控件改为
CLASS   OBJECT,
LABEL EDTATTRIBUTE,
MSW_CLASS TEDIT,
location:0
}
第二个控件改为location:1
作者: haku    时间: 2007-8-24 10:54
谢谢 已经成功定义
但回访时候还是不对
因为在GUI MAP里是attribute_11
但在录的时候成了12  ,我手动改成11依然没用
回访还是停下
作者: haku    时间: 2007-8-24 11:07
# 挂号操作
        set_window ("挂号操作", 1);
        obj_mouse_click ("EDTEXTERIORID", 46, 12, LEFT);
        obj_type ("EDTEXTERIORID","1112111<kReturn>");
        obj_type ("EdtMedicalCardId","<kReturn>");
        obj_type ("EdtType","1<kReturn>");
        obj_type ("EdtAttribute_12","2<kReturn>");
代码
作者: haku    时间: 2007-8-24 11:30
为什么定义好了后 用SPY看该空间 依然有ID的存在呢
是不是这样就不能在录制的时候显示成先前定义的那个控件
而依然作为另外一个控件来识别?
请高手们再指点下
谢谢拉
作者: fengxueren    时间: 2007-8-24 11:47
set_class_map("tedit", "edit");
        set_record_attr("tedit", "class attached_text MSW_class", "", "location");
        set_record_method("tedit", RM_RECORD);

在录制脚本之前先运行一下上面的语句
然后回放应该就不会有问题了
作者: fengxueren    时间: 2007-8-24 11:49
看楼主的脚本,你的程序应该使用delphi开发的吧?
去下个delphi插件装上吧,就不会出现上面的错误了
作者: haku    时间: 2007-8-24 12:55
不是啊 我们公司是C++、
那怎么办呢
就是脚本录制时候还是不用定义过的
作者: haku    时间: 2007-8-24 13:16
set_class_map("tedit", "edit");
        set_record_attr("tedit", "class attached_text MSW_class", "", "location");
        set_record_method("tedit", RM_RECORD);
但如果是打这个进去 那定义的类就是EDIT的了  但定义的是OBJECT呀
作者: haku    时间: 2007-8-24 13:21
解决了解决了 这里定义的那段代码应该是 LOCATION:1谢谢楼上的指点和帮忙 万分感激
作者: fengxueren    时间: 2007-8-24 17:19
TEDIT好像是c++ builder开发的控件,用delphi控件就能解决

另外set_class_map("tedit", "edit");
        set_record_attr("tedit", "class attached_text MSW_class", "", "location");
        set_record_method("tedit", RM_RECORD);
这几行代码的意思是把对象做了映射
作者: ytzfr    时间: 2007-8-27 15:26
sdlkfj3




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