haku 发表于 2007-8-23 15:50:55

关于WR中GUI MAP的问题

现在出现一个严重的问题
脚本每当运行到一EDTAttribute的地方就不动了
后来发现 用SPY看了下, 每次刷新个帐号 这个OBJECT的描述里的一格ID就变了
然后提示就是不能发现对象 不好HIGHLIGHT
请问这个问题怎么解决
谢谢

dionysus 发表于 2007-8-23 16:38:10

lz把这个控件的gui map描述放上来看下?

haku 发表于 2007-8-24 10:06:03

谢谢斑竹

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

就说每次ID都变的 然后控件在回放时候就不能够识别
我已经用GUI CONFIGURE隐射过了 也把ID 这个选像除去但这个结果没有被保存下来啊
而且就是没用 每次回放都显示不能够识别 下周就要交测试报告了 ...帮帮忙哟

fengxueren 发表于 2007-8-24 10:09:51

把MSW_ID 132002这个属性删掉
如果还不能认出来
试着加个location或者index属性

haku 发表于 2007-8-24 10:23:47

去掉后就不能够认出来了
具体的LOCATION INDEX该怎么写呢
不太清楚能否说明白点么?

fengxueren 发表于 2007-8-24 10:37:08

在编程的时候,控件都会有一些属性
比如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:42

谢谢 已经成功定义
但回访时候还是不对
因为在GUI MAP里是attribute_11
但在录的时候成了12,我手动改成11依然没用
回访还是停下

haku 发表于 2007-8-24 11:07:16

# 挂号操作
        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:47

为什么定义好了后 用SPY看该空间 依然有ID的存在呢
是不是这样就不能在录制的时候显示成先前定义的那个控件
而依然作为另外一个控件来识别?
请高手们再指点下
谢谢拉

fengxueren 发表于 2007-8-24 11:47:45

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:30

看楼主的脚本,你的程序应该使用delphi开发的吧?
去下个delphi插件装上吧,就不会出现上面的错误了

haku 发表于 2007-8-24 12:55:31

不是啊 我们公司是C++、
那怎么办呢
就是脚本录制时候还是不用定义过的

haku 发表于 2007-8-24 13:16:10

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:15

解决了解决了 这里定义的那段代码应该是 LOCATION:1谢谢楼上的指点和帮忙 万分感激

fengxueren 发表于 2007-8-24 17:19:30

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:18

sdlkfj3
页: [1]
查看完整版本: 关于WR中GUI MAP的问题