kingylq 发表于 2007-3-12 16:44:12

使用虚拟控件提示“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
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:33

楼主是执行到哪一句的时候报出错误提示的?说明这一个函数不支持虚拟控件。虚拟控件是根据屏幕上坐标范围设定的,所以最好不要使用
lz再给些信息吧,也许能使用gui map configuration来声明一下

kingylq 发表于 2007-3-13 09:58:33

执行到 edit_set ("virtual_object_name", ddt_val(table,"name")); 这行就开始报错的。
虚拟控件的坐标用的软件界面的相对坐标吗?在指定的区域内输入相应的文本在理论上因该是可以不是吗?斑竹有没这方面的资料?分享一下

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

[ 本帖最后由 kingylq 于 2007-3-13 10:00 编辑 ]

win3323 发表于 2007-3-14 10:00:56

版主,有办法解决吗?
sdlkfj8

dionysus 发表于 2007-3-14 22:05:40

其实用configuration的话不是很麻烦,你把声明的语句都放到一个脚本中去,之后每次运行录制脚本的时候call一下这个脚本即可

kingylq 发表于 2007-3-15 09:44:49

谢谢斑竹

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

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

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

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

[ 本帖最后由 kingylq 于 2007-3-15 09:51 编辑 ]

dionysus 发表于 2007-3-15 21:13:18

虚拟控件确实很有用,但我觉得它支持映射过来的类很少,而且还与屏幕坐标有关联,所以用起来有些不爽。
lz可以加载delphi插件,这样会对识别有很大帮助

win3323 发表于 2007-3-27 17:50:09


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

,,,,,,,,,,,,,,,,,,,,,
页: [1]
查看完整版本: 使用虚拟控件提示“This function is not supported for virtual objects”?