51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4643|回复: 20
打印 上一主题 下一主题

[原创] QTP对一些控件的识别都用什么属性

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2012-8-30 13:25:32 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
比如对web控件,对page主要是用index识别,webEdit由name识别,button由name识别,webElement由intertext识别。那flex的一些常用控件由哪个属性识别??
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

21#
 楼主| 发表于 2012-9-6 17:14:40 | 只看该作者
回复 20# xjwldlover


    那怎么更改?
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2012-9-5 17:59:26 | 只看该作者
回复  xjwldlover


    这代码完全看不懂呀。我的意思是说,能不能怎样让我把flex插件里的configure项 ...
moshuang 发表于 2012-9-5 16:41


这段代码的意思就是取控件WinList,重新定义控件的强制识别属性、辅助识别和智能识别标志。
回复 支持 反对

使用道具 举报

该用户从未签到

19#
 楼主| 发表于 2012-9-5 16:41:18 | 只看该作者
回复 18# xjwldlover


    这代码完全看不懂呀。我的意思是说,能不能怎样让我把flex插件里的configure项改动,让他的智能识别项减少,没有automationindex,这样脚本就不用每次去掉这个值。这段代码和这里有关系吗?谢谢你了,太谢谢了。
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2012-9-5 11:25:03 | 只看该作者
这事整愁了,我直接把帮助文档里的这段示例发给你吧

  1. Dim qtApp
  2. Dim qtIdent
  3. Dim qtWinListIdent
  4. Dim intPosition


  5. Set qtApp = CreateObject("QuickTest.Application")
  6. qtApp.Launch
  7. qtApp.Visible = True

  8. Set qtIdent = qtApp.Options.ObjectIdentification
  9. Set qtWinListIdent = qtIdent.Item("WinList")

  10. qtIdent.ResetAll
  11. qtWinListIdent.OrdinalIdentifier = "Index"


  12. intPosition = qtWinListIdent.MandatoryProperties.Find("nativeclass")
  13. qtWinListIdent.MandatoryProperties.Remove intPosition
  14. If qtWinListIdent.AvailableProperties.Find("items count") <> -1 Then
  15.     qtWinListIdent.MandatoryProperties.Add "items count" '
  16. End If


  17. qtWinListIdent.AssistiveProperties.RemoveAll
  18. qtWinListIdent.AssistiveProperties.Add "all items"
  19. qtWinListIdent.AssistiveProperties.Add "width", 1
  20. qtWinListIdent.AssistiveProperties.Add "height", -1
  21. qtWinListIdent.AssistiveProperties.MoveToPos 2, 1

  22. qtWinListIdent.EnableSmartIdentification = True
  23. If qtWinListIdent.BaseFilterProperties.Count = 0 Then
  24.     qtWinListIdent.BaseFilterProperties.Add "x"
  25.     qtWinListIdent.BaseFilterProperties.Add "y"
  26. End If
  27. qtWinListIdent.OptionalFilterProperties.Add "abs_x", 1
  28. qtWinListIdent.OptionalFilterProperties.Add "abs_y", 2

  29. Set qtWinListIdent = Nothing
  30. Set qtIdent = Nothing
  31. Set qtApp = Nothing
复制代码
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2012-9-5 00:51:25 | 只看该作者
object identification可以查看的。。
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2012-9-4 18:06:09 | 只看该作者
本帖最后由 xjwldlover 于 2012-9-5 10:15 编辑

找到了
好像这个文件无法独立运行,如果不行的话,你就到你自己QTP安装目录里找这个英文文档吧
HP\QuickTest Professional\help

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

该用户从未签到

15#
 楼主| 发表于 2012-9-4 15:16:08 | 只看该作者
回复 14# xjwldlover


    唯一的属性,我的对象库里的属性我去掉automationindex值后是可以的。可是,我就是想知道怎样在object identification里面去掉这个属性。可是在那里偏偏不能用这个configure,你说的英文帮助文档里有吗?传给我吧。F1里没有

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2012-9-3 17:33:28 | 只看该作者
回复 13# moshuang


   呵呵 就是举个例子,控件肯定也有其他可以唯一标识的‘属性集’啊。
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2012-9-3 16:16:14 | 只看该作者
回复 12# xjwldlover


    那它也就是唯一标示IE,它不能唯一标示控件呀
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2012-8-31 16:51:56 | 只看该作者

  1. Set IE = CreateObject("InternetExplorer.Application")
  2. IE.Visible = True
  3. ie.Navigate "www.baidu.com"
  4. hwnd = ie.HWND
  5. Browser("目标").SetTOProperty "hwnd", hwnd
复制代码

不知道是否我的解释有偏差啊。我的意思不是时hwnd有多好用。而是说对象的属性‘集合’的使用很灵活,作用很强大~
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2012-8-31 16:15:13 | 只看该作者
回复 10# xjwldlover


    能举个例子吗?针对browser的。
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2012-8-31 15:30:44 | 只看该作者
回复 8# moshuang


    hwnd是web对象的一个句柄属性,可以唯一标识这个对象。本质上是和name一样,是Object的一个属性,只不过它具有唯一性。但它是会变的哦,所以可能不太好抓。一般只有在确定browser时使用它。其他类型的对象我就不知道是否有这个属性了,推测应该有类似的属性吧
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2012-8-31 14:40:01 | 只看该作者
回复 5# xjwldlover


    我这样问,是因为很多flex控件的属性里面有automationindex和automationname,这样子我的脚本总因为这个index无法回放成功。我删除了有时候它又说对象找不到。真是不知道该怎么做了。这个automationindex是加载页面时后自动生成的还是开发那边自动生成的,一旦返还给开发,这些就又变了??
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2012-8-31 14:37:53 | 只看该作者
回复 5# xjwldlover


    我不太明白这一句话“给对象库的对象添加属性,比如Hwnd,来唯一确定这个对象。”。Hwnd什么意思?
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2012-8-31 14:37:06 | 只看该作者
回复 6# xjwldlover


    非常非常感谢你的回答。明白了。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2012-8-30 18:45:55 | 只看该作者
Object Identification 的作用我认为有三个功能,如有错误请指正,谢谢
①辨识对象类型,比如webEdit,JavaButton什么的
②便于修改对象库。虽然QTP本质是使用对象属性来匹配页面对象。但如果在对象库中所有的对象都是一个类型,一个样子,你怎么去修改。挨个看属性还不如不用这个工具。于是QTP使用Mandatory属性来确定这个控件的类型和显示名称。你可以很容易找到这个对象并修改。
③辨识出对象类型后提供对象的方法。比如你webButton().Object加一个点后,后面提示那么多方法。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2012-8-30 17:19:47 | 只看该作者
回复 4# moshuang

你说的QTP识别属性其实是Tools-Object Identification中控件的Mandatory Properties(MP)强制属性和Assistive Properties (AP)辅助属性。一般情况下QTP根据MP和AP可以唯一确定一个对象,这里面包含的其实是一个经验值。当根据这些属性无法唯一确定一个对象时,QTP的智能识别(Smart Identification)便发挥作用了,比如你说的PAGE使用index来唯一确定。这其实不是Page本身的属性,是QTP没招了,只能根据他们顺序来定义。
但绝大多数情况下,我们是不允许使用智能识别,因为这代表这我们没有准确找到目标对象。这时我们
给对象库的对象添加属性,比如Hwnd,来唯一确定这个对象。
总的来说,我们可以使用“对象(TO)的所有属性”来查找一个页面的运行时对象(RO),QTP为了方便我们,默认先使用“一些几乎必定要用的属性”来描述这个对象,如果能唯一确定一个对象,那我们就无须再改了,如果不能我就再手动添加属性。

总结:QTP识别对象是根据对象库属性。你说的那些属性,是QTP默认属性的一个子集,QTP默认属性又是对象属性的子集

我的描述不够清晰,等以后我理解再深刻点时再编辑吧,希望高手能予以指正~
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2012-8-30 16:56:47 | 只看该作者
回复 2# xjwldlover


    难道不是这样子吗?对一些控件在object identification里面是写好了由哪些属性来识别这个控件的呀。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    无聊
    2020-12-8 11:20
  • 签到天数: 605 天

    连续签到: 1 天

    [LV.9]测试副司令

    3#
    发表于 2012-8-30 15:45:17 | 只看该作者
    介个没有什么规定的说法吧,这个问题很难回答。。。。只要能识别对象,你管它用的是什么属性去识别的啦。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-17 09:38 , Processed in 0.080929 second(s), 30 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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