51Testing软件测试论坛

标题: 使用虚拟控件提示“This function is not supported for virtual objects”? [打印本页]

作者: kingylq    时间: 2007-3-12 16:44
标题: 使用虚拟控件提示“This function is not supported for virtual objects”?
刚学WR 没多久,碰到一些虚拟控件问题,请知道的指教一下。谢谢。

是这样的: 我录了个 用户登录脚本,在脚本由于用户编码和用户口令输入框是公司自己定义的控件,WR认不到,所以我就定义了2个虚拟OBJ(virtual_object_name,virtual_object_pw),来替换原来的无法识别的2个控件,在回放脚本时,提示“This function is not supported for virtual objects”.不知道该怎样解决,找了很多地方都没找到这方面的资料。请大家指教一下。如果有这方面资料的朋友请分享一下,谢谢了。如何才能在脚本中使用虚拟控件?
图和代码如下:

图片地址http://img.photo.163.com/9zprFT0kL6rPFGvZeP5lcg==/5066549581290569.gif


table = "\\dt1.xls";
rc = ddt_open(table, DDT_MODE_READ);
if (rc!= E_OK && rc != E_FILE_OPEN)
        pause("Cannot open table.");
ddt_get_row_count(table,table_RowCount);
for(table_Row = 1; table_Row <= table_RowCount; table_Row ++)
{
        ddt_set_row(table,table_Row);
        if(invoke_application(path_cz,"","",SW_SHOW)!=0)
        {
             report_msg("找不到程序");
             texit;
                        }
#系统登录      
        win_activate ("系统登录");
         set_window ("系统登录", 5);
         edit_set ("virtual_object_name", ddt_val(table,"name"));
         password_edit_set("virtual_object_pw", ddt_val(table,"Pd"));
         button_press ("确定");                                                }
# 字符输入错误,弹出错误窗口
           if (win_exists("pjhx")==E_OK)
            {
                 set_window ("pjhx", 5);
                 button_press ("确定");                           
            }
         if(win_exists("提示信息")==E_OK)
            {
        set_window("提示信息",5);
        button_press("确定");
             }
#如果用户名和密码都为用空        
        if(ddt_val(table,"yhm")== ""||ddt_val(table,"pb") == "")
                {
                      tl_step("用户名和密码",0,"用户名和密码都为空!");
        }
        else if(ddt_val(table,"yhm")=="999"|| ddt_val(table,"pb")=="123")
                {
              tl_step("用户名和密码",1,"成功登入。");                          
                }
}
ddt_close(table);

[ 本帖最后由 kingylq 于 2007-3-12 17:21 编辑 ]
作者: dionysus    时间: 2007-3-12 22:54
楼主是执行到哪一句的时候报出错误提示的?说明这一个函数不支持虚拟控件。虚拟控件是根据屏幕上坐标范围设定的,所以最好不要使用
lz再给些信息吧,也许能使用gui map configuration来声明一下
作者: kingylq    时间: 2007-3-13 09:58
执行到 edit_set ("virtual_object_name", ddt_val(table,"name")); 这行就开始报错的。
虚拟控件的坐标用的软件界面的相对坐标吗?在指定的区域内输入相应的文本在理论上因该是可以不是吗?斑竹有没这方面的资料?分享一下

用 gui map configuration 声明的话是可以用的。就是可移植性比较差,每次都要重新声明比较麻烦。

[ 本帖最后由 kingylq 于 2007-3-13 10:00 编辑 ]
作者: win3323    时间: 2007-3-14 10:00
版主,有办法解决吗?
sdlkfj8
作者: dionysus    时间: 2007-3-14 22:05
其实用configuration的话不是很麻烦,你把声明的语句都放到一个脚本中去,之后每次运行录制脚本的时候call一下这个脚本即可
作者: kingylq    时间: 2007-3-15 09:44
谢谢斑竹

呵呵。我只是想知道下,虚拟控件的用法...

虚拟控件,不就是为解决无法识别控件问题吗?

在正常的代码中加入虚拟控件,如果可以省去比较多的麻烦,我觉得用虚拟控件会更好点,而且也比较容易,不是吗?

是WR本身的问题吗?对 DELPHI 的支持应该不这么差吧?

[ 本帖最后由 kingylq 于 2007-3-15 09:51 编辑 ]
作者: dionysus    时间: 2007-3-15 21:13
虚拟控件确实很有用,但我觉得它支持映射过来的类很少,而且还与屏幕坐标有关联,所以用起来有些不爽。
lz可以加载delphi插件,这样会对识别有很大帮助
作者: win3323    时间: 2007-3-27 17:50

edit_set ("virtual_object_name", ddt_val(table,"name"));
password_edit_set("virtual_object_pw", ddt_val(table,"Pd"));
改为:
obj_type("virtual_object_name", ddt_val(table,"name"));
obj_type("virtual_object_pw", ddt_val(table,"Pd"));
问题解决.
原因是virtual_object_name和virtual_object_pw控件属object,  edit_set不能在object类型控件上用
作者: leay    时间: 2007-4-20 11:40
,,,,,,,,,,,,,,,,,,,,,




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