table = "default.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);
# Shell_TrayWnd
set_window ("Shell_TrayWnd", 1);
button_press ("Start");
# BaseBar
set_window ("BaseBar", 7);
toolbar_select_item ("ToolbarWindow32_1", "程序(P);附件;计算器");
# 计算器
win_type ("计算器",ddt_val(table, "t1") );
set_window ("计算器", 0);
obj_mouse_click ("Button", 21, 13, LEFT);
obj_type ("Button",ddt_val(table, "t2") );
obj_mouse_click ("Button_1", 24, 17, LEFT);
obj_mouse_click ("Button_2", 54, 9, LEFT);
win_close ("计算器");
# 判断结果
line1=ddt_val(table,"t1");
line2=ddt_val(table,"t2");
line3=ddt_val(table,"t3");
if(line1*line2==line3)
report_msg("line1="line1",line2="line2",line3="line3",right.");
else
report_msg("line1="line1",line2="line2",line3="line3",wrong.");
}
ddt_close(table);
[ 本帖最后由 狩猎者 于 2006-5-19 10:44 编辑 ] line1=ddt_val(table,"t1");
line2=ddt_val(table,"t2");
line3=ddt_val(table,"t3");
line1、line2、line3都是在你的数据表中取出来的数据,
那么后面的这个判断 if(line1*line2==line3)和操作中得到结果没有任何关系阿,呵呵 ddt_set_row(table,table_Row);
line1=ddt_val_by_row(table,Row,"t1");
line2=ddt_val_by_row(table,Row,"t2");
line3=ddt_val_by_row(table,Row,"t3");
哈,其实这问题不是函数问题,你在循环中的变量设错了而已,呵呵,受教了,希望以后这种贴越多越好,从里面可以学到东西 对,对,zhenhaiou说的对啊,是我钻到误区了,多谢指正!
那如何提取这个数值呢,我用你说的函数试了下,总是不成功,说找不到gui或者就是找不到class。 在关闭计算器之前把结果取出来,和line3进行比较就可以
至于用什么函数,你可以去试试,我现在没有wr,不能调试 原帖由 狩猎者 于 2006-5-19 14:30 发表
对,对,zhenhaiou说的对啊,是我钻到误区了,多谢指正!
那如何提取这个数值呢,我用你说的函数试了下,总是不成功,说找不到gui或者就是找不到class。
gui中是不是已经学了计算器的结果显示框呢? 是学了就是不认,郁闷,我从做了个脚本就没问题了!
现在是差不多ok了,但还有个小问题,就是返回的文本中,计算结果后面带小数点,如果计算结果是整数,那么最后判断会说错误。如:5+4=9.可以看下windows 自带计算器就是这样的,而我们在脚本中计算5+4=9。
大家一起想想怎么处理好,我的想法只能是给整数的数据加个字符串,谁有好办法啊!
[ 本帖最后由 狩猎者 于 2006-5-19 16:43 编辑 ] if(test - line3 == 0)
真厉害,反映就是快啊!向你学习!!以后多指教啊!
下面把完整通过的脚本贴出来!#加载GUI
GUI_unload_all()
GUI_load("d:\\wrtest\\yanzhengjieguo\\gui.gui");
#数据驱动
table = "default.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);
# Shell_TrayWnd
set_window ("Shell_TrayWnd", 1);
button_press ("Start");
# BaseBar
set_window ("BaseBar", 7);
toolbar_select_item ("ToolbarWindow32_1", "程序(P);附件;计算器");
# 计算器
win_type ("计算器",ddt_val(table, "t1") );
set_window ("计算器", 0);
obj_mouse_click ("Button", 21, 13, LEFT);
obj_type ("Button",ddt_val(table, "t2") );
obj_mouse_click ("Button_1", 24, 17, LEFT);
obj_get_text("LABLE1",test);
obj_mouse_click ("Button_2", 54, 9, LEFT);
win_close ("计算器");
# 判断结果
line1=ddt_val(table,"t1");
line2=ddt_val(table,"t2");
line3=line1*line2;
if(test-line3 == 0)
report_msg("line1="line1",line2="line2",test="test",line3="line3",right.");
else
report_msg("line1="line1",line2="line2",test="test",line3="line3",wrong.");
}
ddt_close(table);
s
sign 整个下午都在运行这段代码,有一些不清楚,运行不过去# 计算器
win_type ("计算器",ddt_val(table, "t1") );
set_window ("计算器", 0);
obj_mouse_click ("Button", 21, 13, LEFT);
obj_type ("Button",ddt_val(table, "t2") );
obj_mouse_click ("Button_1", 24, 17, LEFT);
obj_get_text("LABLE1",test);
obj_mouse_click ("Button_2", 54, 9, LEFT);
win_close ("计算器");
其中"button"指的是计算器的哪个按钮,对计算器的MAP是不是做处理了?
“button_1” 和“button_2”又分别是哪个按钮?
set_window ("计算器", 0);这句话起什么作用???
急切想知道!!!
页:
1
[2]