51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3317|回复: 14
打印 上一主题 下一主题

[原创] GetTextLocation的一个问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-3-5 13:21:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
gettextlocation的一个问题
winlistview下有这么个方法:gettextlocation,描述中说:
Description
Checks whether the specified text string is contained in the specified window area.

Syntax
object.GetTextLocation (TextToFind, Left, Top, Right, Bottom, [MatchWholeWordOnly])
按我的理解这的方法返回的该是文字串的区域坐标,而L,T,R,B则应该是表示查找范围,如果这些值都输入-1,那么就是表示在整个控件中查找。
而实际运行中我发现L,T,R,B四个值几乎和超找的内容没什么关系。我把这四个值都设为0,居然也可以找到对象中的某一段话,返回的值是True。而如果直接用变量,返回给我的则是整个object对应的L,T,R,B。而不是对应的文字区域。
而后我再认真看了看帮助文档
发现还有这么段话:
Notes:


The GetTextLocation method may behave differently in different run sessions depending on the operating system version you are using, service packs you have installed, other installed toolkits, the APIs used in your application, and so on.   Therefore, when possible, it is highly recommended to use the GetROProperty method to retrieve the value of the text (or equivalent) property from an object in your application instead of using the GetTextLocation method.

那么这是不是意味着,我测试中出现的情况是因为我的机子本身的环境造成的?还是这个方法本身的返回值就是整个对象的L,T,R,B?使用前对L,T,R,B的付值难道不是指查找区域范围?
期待答案中。。。。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-3-5 16:45:40 | 只看该作者
你应该还看到这段
Return Value
A Boolean value.  This method returns the coordinates of the rectangle containing the first instance of the text into the Left, Top, Right, and Bottom arguments if the text is found.
Remarks
The text to capture must be visible in the application window when the step runs.

If the text is found (return value = True) and if the Left, Top, Right, and Bottom arguments are supplied as variables, then the method also returns the exact coordinates of the specified text to the supplied arguments (the returned coordinates overwrite the supplied ones).

你是在哪种类型的对象中查找文字?

[ 本帖最后由 testlab 于 2010-3-5 16:53 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2010-3-8 12:48:39 | 只看该作者
已经看过的。
The text to capture must be visible in the application window when the step runs
===============
你是说这个吗?
还是说哪句?
至于对象我问题描述中已经写了,是winlistview
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2010-3-8 16:05:25 | 只看该作者
沉的好快
顶下
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2016-8-25 11:11
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    5#
    发表于 2010-3-8 17:29:56 | 只看该作者
    呵呵,问题是   L,T,R,B 是什么? 是out类型
    sample 给的是对变量赋的一个初值。
    get的坐标能是你给的值吗?在想想吧。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
     楼主| 发表于 2010-3-9 11:33:23 | 只看该作者
    原帖由 liujinkui 于 2010-3-8 17:29 发表
    呵呵,问题是   L,T,R,B 是什么? 是out类型
    sample 给的是对变量赋的一个初值。
    get的坐标能是你给的值吗?在想想吧。

    不明白。。。。
    如果根据帮助文档里的解释,这个L,T,R,B应该是我所指定的一个区域范围,然后在这个区域范围内进行查找,如果查找到了,再返回具体的L,T,R,B并覆盖原来我所给的值。
    我所给的并不是GET的值,而仅仅是我指定的搜索范围。GET的坐标是后面返回给我的。
    另外“out类型”?何解?
    能否给个例子呢?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
     楼主| 发表于 2010-3-9 11:35:00 | 只看该作者
    而这个返回值也很奇怪。
    既然我本文是固定的,那么返回的值按道理该是固定的,但是如果我所给的初始值不同,返回给我的值也可能会不同。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-8-25 11:11
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    8#
    发表于 2010-3-9 13:02:00 | 只看该作者

    回复 6# 的帖子

    windowListView 的区域范围不用你给,那是每个对象的属性
    out 是地址传递的变量前缀 in 是值传递的前缀
    你能告诉我: L,T,R,B 的结果你是怎么验证的呢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
     楼主| 发表于 2010-3-9 13:22:13 | 只看该作者
    原帖由 liujinkui 于 2010-3-9 13:02 发表
    windowListView 的区域范围不用你给,那是每个对象的属性
    out 是地址传递的变量前缀 in 是值传递的前缀
    你能告诉我: L,T,R,B 的结果你是怎么验证的呢


    如果这样的话,那么我是否可以理解为其实这个方法所返回的是对象的坐标,而不是文本的坐标?
    那么问题又出来了。
    我实验的例子信息如下:
    X 722
    Y 479
    H(高) 121
    W(宽) 242
    测试1:
    搜索文字为头两个字 “您的”
    l=10
    t=10
    r=150
    b=150
    返回:
    l=7
    t=-19
    r=147
    b=121
    测试2
    搜索文字为头两个字 “您的”
    所有传入变量值为 -1
    返回的值为:
    l=-3
    t=-29
    r=239
    b=92
    测试3
    搜索文字为全部文本信息“您的XXXXXXX”
    变量值传入
    l=10
    t=10
    r=150
    b=150
    变量值返回为
    l=17
    t=-9
    r=157
    b=131

    所有测试期间,对象固定不动。

    [ 本帖最后由 z_kh 于 2010-3-9 13:27 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
     楼主| 发表于 2010-3-9 13:24:00 | 只看该作者
    这其中甚至出现了负数,不知道这是什么原因?ltrb的值是以哪个为参考点的?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-8-25 11:11
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    11#
    发表于 2010-3-9 16:10:05 | 只看该作者
    你上面的数据应该没有意义,但是出来负数就应该不对了
    object.GetTextLocation (TextToFind, Left, Top, Right, Bottom, [MatchWholeWordOnly])

    TextToFind 位置是否有变化 也就是 你搜索的文本信息在WindowListView中的位置有没有变?

    我上面的结论是错误的
    不写脚本不知道问题出在哪了,Left, Top, Right, Bottom 变量 既是in 又是out

    当给出的范围下于实现的坐标范围,会以给定的范围减去实际的范围值 不算高位
    如:



    [ 本帖最后由 liujinkui 于 2010-3-9 18:11 编辑 ]

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
     楼主| 发表于 2010-3-10 10:28:00 | 只看该作者
    呵呵,
    你现在给的例子就是我现在的困惑了
    问题
    1 负数首位相减,正数末位相减?
    2 in的范围值作用好象没什么意义
    3 out的并不是我本身所想要的文本的区域
    4 其实这个方法本身除了找到是否存在文字外,LTRB这些变量并没有什么实际可利用价值。
    不知道版主兄是如何认为的?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-8-25 11:11
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    13#
    发表于 2010-3-10 17:57:01 | 只看该作者
    原帖由 z_kh 于 2010-3-10 10:28 发表
    呵呵,
    你现在给的例子就是我现在的困惑了
    问题
    1 负数首位相减,正数末位相减?
    2 in的范围值作用好象没什么意义
    3 out的并不是我本身所想要的文本的区域
    4 其实这个方法本身除了找到是否存在文字外,LTRB这 ...


    问题1 看结果现在是这样的
    问题2 in 过来的范围 ,应该是指 在符合多个搜索结果有效
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
     楼主| 发表于 2010-3-10 20:34:45 | 只看该作者
    莫非就是传说中的鸡肋。
    非常感谢。。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
    发表于 2010-3-17 19:48:02 | 只看该作者
    学习了。。。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-15 13:49 , Processed in 0.079926 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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