testmgr 发表于 2006-12-7 10:21:21

谁知道如何解决" Item not found"的问题?

提示如下:

"
Window: "XXXXXXXX(主程序)"

Object: "SysListView32_1"

Error: Item not found.

"

如何解决这个问题?
尝试过加入同步点,"list_wait_info("SysListView32_1","value","",10);","obj_wait_bitmap("SysListView32_1", "Img1", 1);"结果不行.
尝试使用wait(time=10),一样不通.
重新录制这个操作步骤删去原有的,执行一样不通.

请高手帮忙解决!!!

testmgr 发表于 2006-12-7 10:28:52

参数化后就不行

重新录制后,如果不将序列号参数化则可以执行,参数化后和原来的代码一样,则执行不通,依旧提示同样的错误!

testmgr 发表于 2006-12-7 14:28:49

给出程序源代码如下

为了解决这个问题:给出程序源代码如下:

# 登陆主程序

# Shell_TrayWnd
        set_window ("Shell_TrayWnd", 1);
        toolbar_button_press ("ToolbarWindow32_2", "系统"); # Button Number 4;
        set_window ("Shell_TrayWnd", 0);
        toolbar_button_press ("ToolbarWindow32_2", "系统"); # Button Number 4;

# 泰谷终端安全与文件保护系统
        set_window ("系统", 4);
        menu_select_item ("启动主程序(S)");

# 身份鉴别
        set_window ("身份鉴别", 5);
        password_edit_set("口令:", "guethudtguathupt");
        button_press ("确定");

# 调用子程序
       
        call "f:\\winrunner\\dat\\scriptsave\\multiusers\\授权用户登陆与锁定策略\\inferloadclock"();
       
       
# 系统(主程序)
        win_close ("系统(主程序)");

# inferloadclock

table1 = "多用户序列号.xls";
rc = ddt_open(table1, DDT_MODE_READ);
if (rc!= E_OK && rc != E_FILE_OPEN)
        pause("Cannot open table.");
ddt_get_row_count(table1,table1_RowCount);
table1_RowCount=1;
for(table1_Row = 1; table1_Row <= table1_RowCount; table1_Row ++)
{
        ddt_set_row(table1,table1_Row);
       
        # 系统(主程序)——设置程序
                set_window ("系统(主程序)", 1);
                list_select_item ("SysListView32", "★授权用户登录/锁定策略");
                button_press ("添加(A)");
                edit_set ("序列号", ddt_val(table1,"userlistnumber"));
               
        # 设置授权用户登陆与锁定策略——调用函数
                mgr_login_openkey(count=1);                            # 手动,手动
                       mgr_msg_write(count=1);       
                mgr_add_user_key(RowCount=1,count=1);        # 添加系统用户为guest
                set_window ("系统(主程序)", 1);
                button_press ("返回(R)");
               
        # 调用安全磁盘管理子程序
                call "f:\\winrunner\\dat\\scriptsave\\multiusers\\安全磁盘\\安全磁盘管理\\safediskmgr"();
               
        #   call "f:\\winrunner\\dat\\scriptsave\\multiusers\\锁定设置\\clock"();               
               
        # 系统(主程序)——修改程序
               
        # 系统(主程序)
                set_window ("系统(主程序)", 1);
                button_press ("登录与锁定");
                list_select_item ("SysListView32", "★授权用户登录/锁定策略");
                list_select_item ("SysListView32_1", ddt_val(table1,"userlistnumber"));
                button_press ("修改(U)");
                       mgr_login_openkey(count=2);                      # 手动,自动
                mgr_add_user_key(RowCount=2,count=2)        # 添加用户为power user
                mgr_del_user(RowCount=2,count=2);        # 删除用户guest和poweruser
                set_window ("系统(主程序)", 1);
                button_press ("返回(R)");
               
        # 调用安全磁盘管理子程序
                call "f:\\winrunner\\dat\\scriptsave\\multiusers\\安全磁盘\\安全磁盘管理\\safediskmgr"();               
               
# 执行授权用户删除程序
               
        # 系统(主程序)
                set_window ("系统(主程序)", 2);
                button_press ("登录与锁定");
                list_select_item ("SysListView32", "★授权用户登录/锁定策略");

//当winrunner执行到这步时出现提示信息:

             list_select_item ("SysListView32_1", ddt_val(table1,"userlistnumber"));       
       
                               button_press ("删除(D)");

        # 警告
                set_window ("警告", 5);
                button_press ("是(Y)");
}
ddt_close(table1);


# 登陆与锁定函数
public function mgr_login_openkey(count)
{
        static table1,rc, table1_Row,table1_RowCount,login,openkey;
        table1 = "函数表1.xls";
        rc = ddt_open(table1, DDT_MODE_READ);
        if (rc!= E_OK && rc != E_FILE_OPEN)
                pause("Cannot open table.");
        table1_RowCount=count;
        for(table1_Row = 1; table1_Row <= table1_RowCount; table1_Row ++)
        {
                ddt_set_row(table1,table1_Row);
                list_select_item ("登录方式_1",ddt_val(table1,"login"));# Item Number 0;
                list_select_item ("解锁方式_1", ddt_val(table1,"openkey"));# Item Number 0;
                report_msg("login:"&ddt_val(table1,"login")&"\n"&"openkey:"&ddt_val(table1,"openkey"));
        }
        ddt_close(table1);
}


# 信息添加函数
public function mgr_msg_write(count)
{
        static table4,rc,table4_Row,table4_RowCount,name,orgnaise,tel,describle;
        table4 = "函数表4.xls";
        rc = ddt_open(table4, DDT_MODE_READ);
        if (rc!= E_OK && rc != E_FILE_OPEN)
                pause("Cannot open table.");
        table4_RowCount=count;
        for(table4_Row = 1; table4_Row <= table4_RowCount; table4_Row ++)
        {
                        ddt_set_row(table4,table4_Row);
                        edit_set ("用户名", ddt_val(table4,"name"));
                        edit_set ("所属部门", ddt_val(table4,"orgnaise"));
                        edit_set ("电 话", ddt_val(table4,"tel"));
                        edit_set_insert_pos ("其它描述", 0, 0);
                        obj_type ("其它描述",ddt_val(table4,"describle"));
        }
        ddt_close(table4);

# 增加用户函数
public function mgr_add_user_key(RowCount,count)
{
        statictable2,rc,table2_Row,table2_RowCount,username,keyin;
        table2 = "表2.xls";
        rc = ddt_open(table2, DDT_MODE_READ);
        if (rc!= E_OK && rc != E_FILE_OPEN)
                pause("Cannot open table.");
        table2_Row=RowCount;
        table2_RowCount=count;
        for(table2_Row ; table2_Row <= table2_RowCount; table2_Row ++)
        {
                        ddt_set_row(table2,table2_Row);
                # 循环添加用户
                        edit_set ("用户名_1", ddt_val(table2,"username"));
                        password_edit_set("密 码", ddt_val(table2,"keyin"));
                        button_press ("添加");
        }
        ddt_close(table2);
                   # 应用
                  button_press ("应用(A)");
                  # 提示
                           set_window ("提示", 0);
                           button_press ("确定");
}

# 删除用户函数
public function mgr_del_user(RowCount,count)
{
        statictable3,rc,table3_Row,table3_RowCount,username;
        table3 = "函数表3.xls";
        rc = ddt_open(table3, DDT_MODE_READ);
        if (rc!= E_OK && rc != E_FILE_OPEN)
                pause("Cannot open table.");
        table3_Row=RowCount;
        table3_RowCount=count;
        for(table3_Row; table3_Row <= table3_RowCount; table3_Row ++)
        {
                        ddt_set_row(table3,table3_Row);
                # 系统(主程序)——删除用户
                        set_window ("系统(主程序)", 10);
                        list_select_item ("用户列表_1",ddt_val(table3, "username")); # Item Number 1;
                        button_press ("删除");
        }
        ddt_close(table3);
                # 应用
                        button_press ("应用(A)");
                # 提示
                        set_window ("提示", 1);
                        button_press ("确定");
       
}
这里又出现了新问题:
(1)自己定义的函数在每次开启winrunner后必须得首先运行一次,否则在程序中调用这个函数时会出现找不到路径的情况
(2)在调用函数前加call"fullpath"();或在General Options ->Folders添加路径后采用call"函数名"();调试成功,但违背我的基本意图
(3)我的意图是:在自定义函数后,能够在任何地方都直接调用函数,而免去采用call指令.也就是说:自定义函数能构具有win_close(objects)功能
(4)曾考虑过采用extern tye function_name(p);这种方式,但实际上:extern 是连接语句,它的功能是让当前编译器能够编译来自其它编译器的函数或库.也就是说,当要在在winrunner中采用C/C++等其它语句时才使用extern.不知道我这种理解是否正确
(5)请教高手能够给出一个解决这类问题的方案,谢谢!!!

testmgr 发表于 2006-12-7 15:19:34

尝试了以下,可以执行了,非常感谢

以后得多向各位大侠求教,还望多多指教!!!sdlkfj2
页: [1]
查看完整版本: 谁知道如何解决" Item not found"的问题?