51Testing软件测试论坛
标题:
谁知道如何解决" Item not found"的问题?
[打印本页]
作者:
testmgr
时间:
2006-12-7 10: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
标题:
参数化后就不行
重新录制后,如果不将序列号参数化则可以执行,参数化后和原来的代码一样,则执行不通,依旧提示同样的错误!
作者:
testmgr
时间:
2006-12-7 14:28
标题:
给出程序源代码如下
为了解决这个问题:给出程序源代码如下:
# 登陆主程序
# 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)
{
static table2,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)
{
static table3,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
标题:
尝试了以下,可以执行了,非常感谢
以后得多向各位大侠求教,还望多多指教!!!sdlkfj2
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2