51Testing软件测试论坛

标题: win_find_text函数 [打印本页]

作者: 李zi    时间: 2005-12-14 16:17
标题: win_find_text函数
不止是这一个函数,像这种返回0或1的函数,当然还有更多的返回某个值的函数,这些返回的结果在哪能看到呢?
我凭想象写了如下的脚本:
public result[];
set_window("6",1);
web_obj_get_text("第六章 WinRunner 的运用 6.1 WinRunner介绍6.2 使用WinRunner6.3 设定GUI Map6.4 编辑GUI","#1","#1",text,"第六章 "," 的运用",1);
win_find_text("6","Win",result);
目的是在"6"这个窗口中查找'Win“这个字符串,找到的位置存入result中
执行一遍这个成功了,于是我就加了一句,改成这个样子:
public result[];
#WinRunner
set_window("6",1);
web_obj_get_text("第六章 WinRunner 的运用 6.1 WinRunner介绍6.2 使用WinRunner6.3 设定GUI Map6.4 编辑GUI","#1","#1",text,"第六章 "," 的运用",1);
r=win_find_text("6","Win",result);
if(r==0)
{pause("ok");}

然后执行到r=win_find_text("6","Win",result);这句就总是提示”xxxx内存不能为written“,我想可能是我数组用的不对吧,请教大家错在哪里了?我不知道tsl如何分配数组空间?
或者是要得知函数的返回值有其他方法,请大家赐教!
作者: shyfish    时间: 2005-12-14 19:25
可能是你没初始化
作者: 李zi    时间: 2005-12-15 07:51
标题: 怎么初始化?
我就是不知道变长的数组应该怎么初始化?
作者: 李zi    时间: 2005-12-15 07:52
标题: 怎么初始化?
我就是不知道变长的数组应该怎么初始化?
作者: shyfish    时间: 2005-12-15 19:10
看看这段代码能不能解决你的问题:

a[0] = 1;  # define
a[1] = 2;
a[2] = 3;

strDir = "Array : \n";
for (i = 0; i < 4; i++)
{
        strDir = strDir & i;
        strDir = strDir & " : ";
        strDir = strDir & a[i];
        strDir = strDir & "\n";
}
pause(strDir);

delete a[1];  # delete content, array length remains

strDir = "Array : \n";
for (i = 0; i < 4; i++)
{
        strDir = strDir & i;
        strDir = strDir & " : ";
        strDir = strDir & a[i];
        strDir = strDir & "\n";
}
pause(strDir);

a[3] = 4;   # directly add an element

strDir = "Array : \n";
for (i = 0; i < 4; i++)
{
        strDir = strDir & i;
        strDir = strDir & " : ";
        strDir = strDir & a[i];
        strDir = strDir & "\n";
}
pause(strDir);

好像没什么数组操作的函数,不像其它脚本语言,比如Python之类的提供很多的函数,不过这样也好,很自由,不用担心越界之类的,就是用起来不太方便
作者: 李zi    时间: 2005-12-16 14:16
标题: 还是感谢!
问题解决了,也许是因为原来录制的页面有些问题,录制flight程序没有异常
你帖的关于数组的使用也让我明白了tsl里数组是如此随意使用的,赫赫
真是感谢!
最近问了很多问题,都是很初级的,感谢你耐心的解答:)
作者: 李zi    时间: 2005-12-16 14:29
标题: 没好:(
不死心,又重新录制了一遍原来出问题的页面,发现还是有问题的。

第二次录制flight时用的是get Text->from object/window,这种是好的
原来出问题的用的是get Text->from selection(web only),使用的脚本如下:
r=win_find_text("图行天下-Go2map-电子地图位置服务","KTV",Arr);
if(r==0)
pause("ok");

用dubug方式跟踪了一下r的值,发现r是-10136,在网上没查到这种错误的返回值对应的是什么问题。
我想应该是出现异常没正常返回吧,按手册上这个函数应该返回0或1的
这是什么原因?
作者: jessica2005    时间: 2005-12-16 19:03
web_obj_get_text():
Returns a text string from an object.
arg1 is the object name.
arg2 is the table row.
arg3 is the table column.
arg4 is the output text.
arg5 is the start of the search.

可以利用函数:tl_step将结果输出到测试报告中
arg1 is the name of the test step.
arg2 sets whether the step passed(PASS) or failed(FAIL).
arg3 is a short explanation of the step.
arg6 is the end of the search.
arg7 is the number to locate.
返回的是text的内容,或者可以用winrunner的结果返回函数控制程序的转向。
e_ok等返回结果的函数来判断转向,可以从联机帮助中找到相关资料。
作者: jessica2005    时间: 2005-12-16 23:47
标题: 回复win_object_get_text函数
你所捕获的错误代码:
-100036,表示不或失败或者文件格式不正确。
其实,函数返回的是text字符串,而不是0或1
winrunner 中有很多返回的函数,可以用在不同的操作类别,可以通过查找联机帮助的返回值。
E_0K   E_EXIT 。。。。很多的


  
web_obj_get_text():
Returns a text string from an object.
arg1 is the object name.
arg2 is the table row.
arg3 is the table column.
arg4 is the output text.
arg5 is the start of the search.

可以利用函数:tl_step将结果输出到测试报告中
arg1 is the name of the test step.
arg2 sets whether the step passed(PASS) or failed(FAIL).
arg3 is a short explanation of the step.
arg6 is the end of the search.
arg7 is the number to locate.
作者: 李zi    时间: 2005-12-19 09:17
标题: 好的,我试一下
感谢jessica2005!
作者: 李zi    时间: 2005-12-19 09:53
标题: win_find_text不成功
web_obj_get_text这个函数是成功的,但是win_find_text不成功。
代码如下:
#WinRunner
set_window("6",1);

####得到"WinRunner"文本的值存在text中
web_obj_get_text("第六章 WinRunner 的运用 6.1 WinRunner介绍6.2 使用WinRunner6.3 设定GUI Map6.4 编辑GUI","#1","#1",text,"第六章 "," 的运用",1);
pause(text);
####在窗口中查找“WinRunner”,位置存在数组ddd中
r=win_find_text("6","WinRunner",ddd);
####打印坐标的第一个值
pause(ddd[0]);

跟踪r的值发现还是        -10036
在帮助里看这个返回值表示E_FILE_NOT_READ_MODE        -10036        Cannot read file because file is not in read mode
我查找的窗口“6”是一个网页,报这样的错是什么意思??

[ 本帖最后由 李zi 于 2005-12-19 10:50 编辑 ]
作者: 李zi    时间: 2005-12-19 10:54
标题: 而且又开始”xxxx内存不能为written“了
我已经晕了!
作者: www.super.zc    时间: 2005-12-23 10:31
标题:
public result[];
把这个东西去掉看看,wr里只要不是在函数体内的变量,数组都可以不申明定义的~~你可能问题就出在这,我觉得也是在这~~




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2