51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 6907|回复: 22
打印 上一主题 下一主题

测试中遇到非标准控件怎办?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-7-10 19:11:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,有哪些办法可以解决WR无法识别非标准控件的问题?

哪位TX有相关学习资料是否可以共享?不甚感激!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-7-10 19:23:27 | 只看该作者
所谓的非标准控件一般就是指的是第三方控件,比如TPanel,TDBEditEh,TDBLookupComboboxEh,TDBGrid。。。都属于第三方控件
第三方控件可以通过手动的方式进行加载
对于wr8以上版本,可以通过tools->gui map configition新增第三方控件;

当然,也可以讲第三方控件通过代码形式写入脚本,然后加载到wr里面,使wr启动时候自动进行加载
可以将脚本路径添加到tools->general option 中的general->startup中
。。。。。。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2007-7-12 12:32:36 | 只看该作者
hehe 自问自答!
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2007-7-12 18:04:44 | 只看该作者
"也可以讲第三方控件通过代码形式写入脚本,然后加载到wr里面,使wr启动时候自动进行加载"  
具体怎么做?
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-7-12 20:06:26 | 只看该作者
如果你的版本是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中的
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2007-7-16 10:46:41 | 只看该作者
以下是我录制的一个系统登录的脚本,但运行该脚本时依次弹出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 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2007-7-16 10:51:01 | 只看该作者
上述问题是否就是你所说的“一般像这类第三方控件基本都有msw_id,有这个id比较麻烦,在脚本中可以将这个msw_id去掉,以后可以省去不少事情”?

如果把MSW_id去掉,会使得set_record_attr函数的参数个数不匹配,怎样解决?
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2007-7-16 12:48:37 | 只看该作者
我工作中遇到的系统软件大多都是用C++Builder开发的,其中很多控件都是WR无法识别的,因此必须解决非标准控件的问题!
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2007-7-16 14:32:47 | 只看该作者
又仔细看了一遍 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”就会出现这个问题呢?
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2007-7-16 20:26:06 | 只看该作者
C++Builder中的DBGrid控件应该映射到哪种标准控件?

我试着将DBGrid控件定义成一个虚拟对象,但是发现GUI对象检查点不支持虚拟对象,如何利用WR的GUI对象检查点功能测试DBGrid控件中任意单元格里的值呢?
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2007-7-17 09:23:11 | 只看该作者
原帖由 fly_freebird 于 2007-7-16 20:26 发表
C++Builder中的DBGrid控件应该映射到哪种标准控件?

我试着将DBGrid控件定义成一个虚拟对象,但是发现GUI对象检查点不支持虚拟对象,如何利用WR的GUI对象检查点功能测试DBGrid控件中任意单元格里的值呢?


如果实在不行,你可以考虑用键盘模拟操作,效果还不错!(有个前提:单元格是可编辑的)
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2007-7-17 11:49:45 | 只看该作者
像第三方控件建议不要用虚拟对象,或者说用cb开发的东西尽量不要用,用了以后隐患比较多,我们公司自己的产品也是用cb开发的。
cb中碰到的比较多的控件应该是TwwDBGrid
像类似这种的第三方控件,大部分都是用obj_type()函数进行操作的,其他的函数用的不灵活。
同意楼上,强烈建议使用键盘模拟操作,这样维护就相对方便了不少
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2007-7-18 08:43:46 | 只看该作者
obj_type()函数我可以试试,但楼上两位TX说的“键盘模拟操作”是什么?我第一次听说,请指教!
回复 支持 反对

使用道具 举报

该用户从未签到

14#
 楼主| 发表于 2007-7-19 12:46:32 | 只看该作者
up
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2007-7-19 17:05:57 | 只看该作者
原帖由 fly_freebird 于 2007-7-18 08:43 发表
obj_type()函数我可以试试,但楼上两位TX说的“键盘模拟操作”是什么?我第一次听说,请指教!


简单讲就是中间对前台的操作全部通过键盘操作来实现,不用鼠标!
回复 支持 反对

使用道具 举报

  • TA的每日心情
    无聊
    2017-1-13 07:55
  • 签到天数: 22 天

    连续签到: 1 天

    [LV.4]测试营长

    16#
    发表于 2007-7-21 10:27:45 | 只看该作者
    原帖由 liuhuascanf 于 2007-7-19 17:05 发表


    简单讲就是中间对前台的操作全部通过键盘操作来实现,不用鼠标!


    厄。。。在WR中怎么使用?sdlkfj1
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
     楼主| 发表于 2007-7-23 16:58:41 | 只看该作者
    我自己用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("连接"); 呢?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
     楼主| 发表于 2007-7-23 17:01:25 | 只看该作者
    为何C#中的 edit 控件经过映射后WR可以识别,但 button 控件经映射后仍无法识别呢?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    19#
     楼主| 发表于 2007-7-25 08:59:37 | 只看该作者
    UP
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20#
    发表于 2007-7-25 09:21:01 | 只看该作者
    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 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-25 05:41 , Processed in 0.086000 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表