51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 4639|回复: 12
打印 上一主题 下一主题

win_find_text函数

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2005-12-14 16:17:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
不止是这一个函数,像这种返回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如何分配数组空间?
或者是要得知函数的返回值有其他方法,请大家赐教!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2005-12-14 19:25:37 | 只看该作者
可能是你没初始化
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2005-12-15 07:51:55 | 只看该作者

怎么初始化?

我就是不知道变长的数组应该怎么初始化?
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2005-12-15 07:52:07 | 只看该作者

怎么初始化?

我就是不知道变长的数组应该怎么初始化?
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2005-12-15 19:10:39 | 只看该作者
看看这段代码能不能解决你的问题:

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之类的提供很多的函数,不过这样也好,很自由,不用担心越界之类的,就是用起来不太方便
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2005-12-16 14:16:13 | 只看该作者

还是感谢!

问题解决了,也许是因为原来录制的页面有些问题,录制flight程序没有异常
你帖的关于数组的使用也让我明白了tsl里数组是如此随意使用的,赫赫
真是感谢!
最近问了很多问题,都是很初级的,感谢你耐心的解答:)
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2005-12-16 14:29:58 | 只看该作者

没好:(

不死心,又重新录制了一遍原来出问题的页面,发现还是有问题的。

第二次录制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的
这是什么原因?
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2005-12-16 19:03:06 | 只看该作者
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等返回结果的函数来判断转向,可以从联机帮助中找到相关资料。
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2005-12-16 23:47:36 | 只看该作者

回复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.
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2005-12-19 09:17:05 | 只看该作者

好的,我试一下

感谢jessica2005!
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2005-12-19 09:53:37 | 只看该作者

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 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2005-12-19 10:54:04 | 只看该作者

而且又开始”xxxx内存不能为written“了

我已经晕了!
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2005-12-23 10:31:04 | 只看该作者

public result[];
把这个东西去掉看看,wr里只要不是在函数体内的变量,数组都可以不申明定义的~~你可能问题就出在这,我觉得也是在这~~
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-5-12 16:18 , Processed in 0.081338 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表