测试中遇到非标准控件怎办?
如题,有哪些办法可以解决WR无法识别非标准控件的问题?哪位TX有相关学习资料是否可以共享?不甚感激! 所谓的非标准控件一般就是指的是第三方控件,比如TPanel,TDBEditEh,TDBLookupComboboxEh,TDBGrid。。。都属于第三方控件
第三方控件可以通过手动的方式进行加载
对于wr8以上版本,可以通过tools->gui map configition新增第三方控件;
当然,也可以讲第三方控件通过代码形式写入脚本,然后加载到wr里面,使wr启动时候自动进行加载
可以将脚本路径添加到tools->general option 中的general->startup中
。。。。。。 hehe 自问自答! "也可以讲第三方控件通过代码形式写入脚本,然后加载到wr里面,使wr启动时候自动进行加载"
具体怎么做? 如果你的版本是8.0的
1.新建一个test实例,比如NewTool
2.tool->gui map configurtion点击"+",弹出新的提示框,learn下控件,比如新的控件名称为
TDBEditEh
3.在classlist下面双击TDBEditEh,弹出一个对话框,将对话框下面generated tsl script拷出来
贴到NewTool下,保存
比如代码如下:
set_class_map("TDBEditEh", "object");
set_record_attr("TDBEditEh", "class regexp_MSW_class label", "attached_text MSW_class", "location");
set_record_method("TDBEditEh", RM_RECORD);
4.一般像这类第三方控件基本都有msw_id,有这个id比较麻烦,在脚本中可以将这个msw_id去掉,以后可以省去不少事情
5.将newtool路径添加到tools->general option 中的general->startup->startup test中的 以下是我录制的一个系统登录的脚本,但运行该脚本时依次弹出2个对话框,要求重新学习TEdit和TEdit_1控件,这是为什么?
set_class_map("TButton", "button");
set_record_attr("TButton", "class label", "MSW_id", "location");
set_record_method("TButton", RM_RECORD);
set_class_map("TEdit", "edit");
set_record_attr("TEdit", "class attached_text", "MSW_id", "location");
set_record_method("TEdit", RM_RECORD);
# 系统登录
win_activate ("系统登录");
set_window ("系统登录", 3);
edit_set ("TEdit", "jl");
password_edit_set("TEdit_1", "123456");
button_press ("确认");
# 消息
set_window ("消息", 0);
button_press ("确定");
# 系统登录
set_window ("系统登录", 1);
button_press ("确认");
[ 本帖最后由 fly_freebird 于 2007-7-16 13:59 编辑 ] 上述问题是否就是你所说的“一般像这类第三方控件基本都有msw_id,有这个id比较麻烦,在脚本中可以将这个msw_id去掉,以后可以省去不少事情”?
如果把MSW_id去掉,会使得set_record_attr函数的参数个数不匹配,怎样解决? 我工作中遇到的系统软件大多都是用C++Builder开发的,其中很多控件都是WR无法识别的,因此必须解决非标准控件的问题! 又仔细看了一遍 liuhuascanf 给出的代码,终于将上述问题解决了!
解决办法:将 Tools -> GUI Map Configuration 中tedit的MSW_id属性状态设置为“Not Used”,然后将regexp_MSW_class的属性设置为“Optional”,重新将Generated TSL script 粘贴到当前的测试脚本中替换掉原来的tedit的脚本,重新运行脚本就不会再提示重新识别TEdit和TEdit_1控件了。
仍存在的疑问:为什么TButton的MSW_id属性设置为“Optional”,运行脚本时没有遇到提示重新识别TButton的问题,而TEdit的MSW_id属性设置为“Optional”就会出现这个问题呢? C++Builder中的DBGrid控件应该映射到哪种标准控件?
我试着将DBGrid控件定义成一个虚拟对象,但是发现GUI对象检查点不支持虚拟对象,如何利用WR的GUI对象检查点功能测试DBGrid控件中任意单元格里的值呢? 原帖由 fly_freebird 于 2007-7-16 20:26 发表 http://bbs.51testing.com/images/common/back.gif
C++Builder中的DBGrid控件应该映射到哪种标准控件?
我试着将DBGrid控件定义成一个虚拟对象,但是发现GUI对象检查点不支持虚拟对象,如何利用WR的GUI对象检查点功能测试DBGrid控件中任意单元格里的值呢?
如果实在不行,你可以考虑用键盘模拟操作,效果还不错!(有个前提:单元格是可编辑的) 像第三方控件建议不要用虚拟对象,或者说用cb开发的东西尽量不要用,用了以后隐患比较多,我们公司自己的产品也是用cb开发的。
cb中碰到的比较多的控件应该是TwwDBGrid
像类似这种的第三方控件,大部分都是用obj_type()函数进行操作的,其他的函数用的不灵活。
同意楼上,强烈建议使用键盘模拟操作,这样维护就相对方便了不少 obj_type()函数我可以试试,但楼上两位TX说的“键盘模拟操作”是什么?我第一次听说,请指教! up 原帖由 fly_freebird 于 2007-7-18 08:43 发表 http://bbs.51testing.com/images/common/back.gif
obj_type()函数我可以试试,但楼上两位TX说的“键盘模拟操作”是什么?我第一次听说,请指教!
简单讲就是中间对前台的操作全部通过键盘操作来实现,不用鼠标! 原帖由 liuhuascanf 于 2007-7-19 17:05 发表 http://bbs.51testing.com/images/common/back.gif
简单讲就是中间对前台的操作全部通过键盘操作来实现,不用鼠标!
厄。。。在WR中怎么使用?sdlkfj1 我自己用C#写了一个测试辅助工具,然后用WR测试这个工具。因为WR无法识别C#中的Button控件,因此,我把它映射到WR的Button标准控件上,并对此Button作如下简单测试(注:下述操作过程是输入数据库服务器IP和数据库名称后点击[连接]按钮测试数据库连接是否成功)。
set_class_map("WindowsForms10.EDIT.app3", "edit");
set_record_attr("WindowsForms10.EDIT.app3", "class attached_text", "MSW_class", "location");
set_record_method("WindowsForms10.EDIT.app3", RM_RECORD);
set_class_map("WindowsForms10.BUTTON.app3", "button");
set_record_attr("WindowsForms10.BUTTON.app3", "class label", "MSW_class", "location");
set_record_method("WindowsForms10.BUTTON.app3", RM_RECORD);
# 通信端帧信息解析工具
win_activate ("通信端帧信息解析工具");
set_window ("通信端帧信息解析工具", 12);
edit_set ("WindowsForms10.EDIT.app3_0", "172.16.50.58");
edit_set ("WindowsForms10.EDIT.app3_1_1", "RPMSDB");
obj_mouse_click ("连接", 38, 9, LEFT);
# 提示信息
set_window ("提示信息", 1);
button_press ("确定");
为何上述脚本中的 obj_mouse_click ("连接", 38, 9, LEFT); 没有被录制成 button_press("连接"); 呢? 为何C#中的 edit 控件经过映射后WR可以识别,但 button 控件经映射后仍无法识别呢? UP lz把下面的这些映射代码拷贝到一个单独的test脚本中,并在tools->general option->general->startup->startup test中指向这个脚本,重启WR再录制一下看看
set_class_map("WindowsForms10.EDIT.app3", "edit");
set_record_attr("WindowsForms10.EDIT.app3", "class attached_text", "MSW_class", "location");
set_record_method("WindowsForms10.EDIT.app3", RM_RECORD);
set_class_map("WindowsForms10.BUTTON.app3", "button");
set_record_attr("WindowsForms10.BUTTON.app3", "class label", "MSW_class", "location");
set_record_method("WindowsForms10.BUTTON.app3", RM_RECORD);
页:
[1]
2