作参数化后的问题.
edit_get_text("Edit",chang);if(chang<50)
{
tl_step("chang",1,"out of range");
}
设的参数化数值为:50,150,120,-50,60
"chang"是针对一个编辑框作的参数化内容.编辑框的值域为50-100.已对这个编辑框做了参数化,当为"if(chang<50)"这样的表达时,可以正确判断参数化里的内容,但是如果是if(chang<50||chang>100)这样表达时,运行后,参数化的数值无论是有效值还是非法值,都会报"out of range"这样的错误.
恳请知道的朋友帮忙解答一下. 在我的机器上试过,没有出现lz所说的问题,搂住试一下chang=60,应该不会执行if里面的语句的 版主实在是个热心人.
我录制的情况是这样的,我是先把一个编辑框的数值做了参数化,然后再把
edit_get_text("Edit",chang);
if(chang<50)
{
tl_step("chang",1,"out of range");
}
这段代码嵌在了参数化的代码里面运作的.
不知道版主对于这样的东西会怎样操作.
实际情况就是.我要对一个数值编辑框做值域验证.所以我的操作是先将编辑框参数化,然后再将编辑框做值域判断. 你是将chang做了数据驱动是么?将数值都写到Excel表中,之后每次循环取值并进行判断。
现在手边没有WR,只能回家试验,其他高手给看下? 你看看你的change是你设置的值么?? if(chang<50)或if(chang<50||chang>100)都是正确的,不会是表达式的原因.楼主能不能再多给些信息,把整个参数化的脚本都贴出来看看.
这里是不是楼主的笔误: tl_step("chang",1,"out of range"); chang是不需要加引号的,否则在报告中不能把对应的值输入出. button_set ("开启", ON);
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 ++)
{
edit_get_text("Edit",chang);
if(chang<50||chang>100);
tl_step("chang",1,"out of range");
ddt_set_row(table,table_Row);
edit_set ("Edit", ddt_val(table,"Edit0"));
}
ddt_close(table);
edit_set_selection ("Edit", 0, 0, 0, 5);
这就是那部分的源码. 这部分如果和源码完全相同,有几处错误.
button_set ("开启", ON);
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 ++)
{
edit_get_text("Edit",chang);
if(chang<50||chang>100); #后边不应是分号,应是大括号"{"
tl_step("chang",1,"out of range"); #chang,不应该加引号,这里它是一个变量
ddt_set_row(table,table_Row);
edit_set ("Edit", ddt_val(table,"Edit0"));
}
ddt_close(table);
edit_set_selection ("Edit", 0, 0, 0, 5);
蓝色部分脚本,最好是放在"ddt_set_row(table,table_Row):edit_set("Edit",ddt_val(table,"Edit0"))"后边.
理解你的意图应该是对编辑框的值域进行判断,这样做好象没有达到目的.是不是应对输入非法数值后,程序会如何处理进行判断.比如输入120,程序会弹出提示,WR应该检查它是否弹出正确提示,可以用图片检查点或文本检查点(提示框的信息).
[ 本帖最后由 shiwomyw 于 2007-7-11 14:07 编辑 ] shiwomyw 给的解释现在可以在代码里面跑得通,可是我给的即使是值域以外的值,可照样也没有报错.
shiwomyw 按照你的方法后,也没有达到我想要的结果啊. button_set ("开启", ON);
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 ++)
{
edit_get_text("Edit",chang);
if(chang<50||chang>100)
{
tl_step("chang",1,"out of range");
}
else
{
ddt_set_row(table,table_Row);
edit_set ("Edit", ddt_val(table,"Edit0"));
}
}
ddt_close(table);
edit_set_selection ("Edit", 0, 0, 0, 5);
lz要达到的是这种效果么?
注意if的语法 哎,问题终于解决了.书看了好几遍,可到头来还是没按照书上的参照去弄.
太感谢版主和shi MM两位了.加上前后引号后,基本问题就解决了.
但还是有个小小的问题,想请两位帮忙.我按照版主的做法加了else{}这样的语句后,就会对每一个参数进行验证,如果是值域以外的值,那么我这个被测软件会弹出值域对话框.必须手工点确定后,才能往下执行,我要再怎样处理,就能让它执行得流畅呢? “如果是值域以外的值,那么我这个被测软件会弹出值域对话框.必须手工点确定后,才能往下执行”
lz是什么意思? 楼主的意思是 正确的 输入应该是 50~100之间,这样的话我觉得你的if 表达式的条件写错了,应该是大于小值,并且小于大值吧?
我的改法是if(chang<50||chang>100)----------->if (chang>=50&&chang=<100) 。
因为如果按你的写法 if(chang<50||chang>100), 和你预设的值50,150,120,-50,60,我们可以看一下。
如果输入50, 那么chang<50为假,执行或语句,chang>100,也是为假。整个if为假
如果输入正确值60,那么chang<50为假,执行或语句,chang>100也为假,整个if还是为假。
所以我感觉你得条件表达式写的不对。
不知道我说的对不对,其他人可以论证一下。sdlkfj5
页:
[1]