51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3641|回复: 13
打印 上一主题 下一主题

关于函数obj_find_text()???

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-9-7 10:57:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
obj_find_text ( object, string, result_array [, search_area  [, string_def ] ] );在对象里返回字符串的位置;
具体用在什么情况下?怎么用?看完注释后不太明白,能举一个例子说明一下吗?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2006-9-7 11:15:57 | 只看该作者
在屏幕上截一个区域的字符放到变量里
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2006-9-7 12:33:10 | 只看该作者
#参数定义,调用脚本的参数在脚本属性中已经设定,故这里只是用作说明
#static objName;          #对象名称
#static strFlag;                    #要查询内容的对应标记字符
#static nUp;                                #向上移动次数
#static nDown;            #向下移动次数
#static nLeft;                        #向左移动次数
#static nRight;                        #向右移动次数
#返回要查询内容的对应标记字符的单元格的左上角和右下角坐标
        obj_find_text(objName,strFlag,coord_array,TRUE);
#将鼠标点击要查询内容的对应标记字符
        obj_mouse_click (objName, coord_array[1], coord_array[2], LEFT);
#按照设定,用键盘移动焦点到所需查询的字符的单元格

        #上移
        for (FUp = 0; FUp < nUp; FUp++)
                obj_type (objName,"<kUp_E>");
        #下移
        for (FDown = 0; FDown < nDown; FDown++)
                obj_type (objName,"<kDown_E>");
        #左移
        for (FLeft = 0; FLeft < nLeft; FLeft++)
                obj_type (objName,"<kLeft_E>");
        #右移
        for (FRight = 0; FRight < nRight; FRight++)
                obj_type (objName,"<kRight_E>");
       

#复制要查询的字符       
        obj_type (objName,"<kCtrl_L-kAlt_L-kc>");

        。。。。。。。。。。。。。。。(后面的省略)


        我现在在看别人写的脚本,在另一个脚本中调用了这个脚本,并传了参数,如下
rc1 = call_close "e:\\\\测试\\\\001" ("说明信息","AA",0,0,0,1);
我现在不明白的是:rc1 = call_close "e:\\\\测试\\\\001" ("说明信息","AA",0,0,0,1);中("说明信息","AA",0,0,0,1)这些信息都传到指定脚本中的哪个变量?是传给我给出绿色标记的函数吗?
还有为什么调用一个脚本还可以传参数?
第一行注释,红色标记的是什么意思?

[ 本帖最后由 shiwomyw 于 2006-9-7 12:40 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2006-9-11 09:11:33 | 只看该作者
我的贴子不要沉下去,问题还没解决呢?
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2006-9-11 17:48:44 | 只看该作者
你贴的代码中并没有看到 rc1 的影子啊
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2006-9-11 18:01:10 | 只看该作者
我贴的代码是一个被调用的脚本(比如命名为001),不涉及rc1,
rc1 = call_close "e:\\\\测试\\\\001" ("说明信息","AA",0,0,0,1);这句代码是主脚本中的,调用了001,可是传的参数我弄不明白??
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2006-9-11 19:14:31 | 只看该作者
我觉得有可能是 传递的是 注释中 objName   strFlag  nUp  nDown   nLeft  nRight   这六个参数, 因为从个数和类型上看是匹配的。但是为什么是三个0和一个1我就不知道了。如果是0的话,那循环语句不就执行不起来了?
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2006-9-11 22:03:34 | 只看该作者
kolecat,你好!传的参数的意义我明白,就像你说的一样它是在一个object中找到一个标志位然后再向上向下向左向右移动光标,(0,0,0,1)代表的只向右移动光标一次。
我不明白,这些参数传到我所给出的代码,都传给了谁,个数都对不上,对应关系也对不上,我看不懂。
如果传给obj_find_text(objName,strFlag,coord_array,TRUE);,这里只有四个参数,而rc1 = call_close "e:\\\\测试\\\\001" ("说明信息","AA",0,0,0,1);传的是六个参数,不明白??
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2006-9-12 11:25:35 | 只看该作者
call_close 的 定义是 invokes a test from within a script and close the test  when the test is completed   
原型是 call_close   test_name ([parameter1,paramenter2,……paramentern]);

我觉得对应的参数是 "e:\\\\测试\\\\001"对应 test_name ;   " 说明信息"对应 objName参数 ;"AA"对应strFlag参数 ; 剩下 四个0,0,0,1 分别对应了nUp/nDown/nLeft/nRight 四个参数;

我的理解是你的脚本中 cal_close语句传递的6个参数 是传递给 "e:\\\\测试\\\\001" 这个 test的,是给整个test调用的, 并不是传给 obj_find_text函数的(虽然obj_find_text函数也用到了objName 和strFlag这两个参数),所以两者之间参数数目是对不上的,就是你说的一个是4个参数,一个是6个参数问题。

不知道我有没有理解错你的问题
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2006-9-12 13:38:51 | 只看该作者
kolecat!我明白你说的意思 了,现在问你一个问题,为什么我可以把这6个参数传给test整个脚本,而这个脚本不是一个函数,参数关系是如何对应的?我对编程了解的比较少,在我印象中只对函数可以传参数的??
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2006-9-21 13:51:41 | 只看该作者
最近又把这段脚本仔细看了一下,大概明白了。

#脚本001#
#static objName;          #对象名称
#static strFlag;                    #要查询内容的对应标记字符
#static nUp;                                #向上移动次数
#static nDown;            #向下移动次数
#static nLeft;                        #向左移动次数
#static nRight;                        #向右移动次数
#返回要查询内容的对应标记字符的单元格的左上角和右下角坐标
        obj_find_text(objName,strFlag,coord_array,TRUE);
#将鼠标点击要查询内容的对应标记字符
        obj_mouse_click (objName, coord_array[1], coord_array[2], LEFT);
#按照设定,用键盘移动焦点到所需查询的字符的单元格

        #上移
        for (FUp = 0; FUp < nUp; FUp++)
                obj_type (objName,"<kUp_E>");
        #下移
        for (FDown = 0; FDown < nDown; FDown++)
                obj_type (objName,"<kDown_E>");
        #左移
        for (FLeft = 0; FLeft < nLeft; FLeft++)
                obj_type (objName,"<kLeft_E>");
        #右移
        for (FRight = 0; FRight < nRight; FRight++)
                obj_type (objName,"<kRight_E>");
       

#复制要查询的字符       
        obj_type (objName,"<kCtrl_L-kAlt_L-kc>");
#打开记事本       
        system ("notepad");
        win_restore ( "Notepad" );
        type("<kCtrl_L-kv>");
        set_window("Notepad", 1);
        obj_get_text("Notepad_Edit", text);        # "notepad"
        win_close("Notepad");
       
#记事本_1
    win_activate ("记事本");
    set_window ("记事本", 0);
    button_press ("记事本_否(N)");

    treturn text;

#脚本001结束#

rc1 = call_close "e:\\\\测试\\\\001" ("说明信息","AA",0,0,0,1);

关键在'treturn  text ',返回给主调用脚本的文本内容;我试过了如果换成‘ return text ’就通不过。
哪位能把 treturn 和return 的区别介绍一下吗?
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2006-9-21 16:33:04 | 只看该作者
嗯,这个嘛,包括你上次问我的问题, 都可以在 Mercury WinRunner User's Guide 里面找到。在programming with TSL 部分的 calling tests 章。

我个人理解就是 TSL言语并不像我们通常学习的C语言之内的那样,虽然是类似C语言,但是TSL也有自己的特有的一些东西,比如说 winrunner自带的资料原文中就是用 call  statement , 而不是 call function 。 所以我们在使用过程并不用太在意是不是只有函数才能接受参数之类问题,是不是符合我们以往我们所学的知识。只要能满足我们的应用就可以了。

treturn 帮助中是这样写的:
    the  treturn  statement terminates execution of the called test and returns control to the calling test .

treturn是 用来返回 call 语句返回值的, 而return不是,前者多出来一个"t"前缀我想是用来专门标识该返回的是一个test 的返回值。 所以你用 return代替 是 treturn是不可行的
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2006-9-21 16:40:23 | 只看该作者
非常感谢!kolecat!看来我还是应该硬着头皮去看英文帮助的。这真是一件不容易的事儿!!!哈哈
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2006-9-21 17:24:46 | 只看该作者
呵呵,我也是开这金山词霸看文章,习惯了就好,good luck!
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-16 01:54 , Processed in 0.073656 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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