moshuang 发表于 2012-8-30 13:25:32

QTP对一些控件的识别都用什么属性

比如对web控件,对page主要是用index识别,webEdit由name识别,button由name识别,webElement由intertext识别。那flex的一些常用控件由哪个属性识别??

xjwldlover 发表于 2012-8-30 13:37:58

本帖最后由 xjwldlover 于 2012-8-30 13:41 编辑

编辑了半天,我还是放弃回答了,你对QTP的对象识别方式理解貌似有点偏差~
没能帮到你

joykao 发表于 2012-8-30 15:45:17

介个没有什么规定的说法吧,这个问题很难回答。。。。只要能识别对象,你管它用的是什么属性去识别的啦。:Q

moshuang 发表于 2012-8-30 16:56:47

回复 2# xjwldlover


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

xjwldlover 发表于 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默认属性又是对象属性的子集

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

xjwldlover 发表于 2012-8-30 18:45:55

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

moshuang 发表于 2012-8-31 14:37:06

回复 6# xjwldlover


    非常非常感谢你的回答。明白了。

moshuang 发表于 2012-8-31 14:37:53

回复 5# xjwldlover


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

moshuang 发表于 2012-8-31 14:40:01

回复 5# xjwldlover


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

xjwldlover 发表于 2012-8-31 15:30:44

回复 8# moshuang


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

moshuang 发表于 2012-8-31 16:15:13

回复 10# xjwldlover


    能举个例子吗?针对browser的。

xjwldlover 发表于 2012-8-31 16:51:56


Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
ie.Navigate "www.baidu.com"
hwnd = ie.HWND
Browser("目标").SetTOProperty "hwnd", hwnd

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

moshuang 发表于 2012-9-3 16:16:14

回复 12# xjwldlover


    那它也就是唯一标示IE,它不能唯一标示控件呀

xjwldlover 发表于 2012-9-3 17:33:28

回复 13# moshuang


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

moshuang 发表于 2012-9-4 15:16:08

回复 14# xjwldlover


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

xjwldlover 发表于 2012-9-4 18:06:09

本帖最后由 xjwldlover 于 2012-9-5 10:15 编辑

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

qtp老菜鸟 发表于 2012-9-5 00:51:25

object identification可以查看的。。

xjwldlover 发表于 2012-9-5 11:25:03

这事整愁了,我直接把帮助文档里的这段示例发给你吧
Dim qtApp
Dim qtIdent
Dim qtWinListIdent
Dim intPosition


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

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

qtIdent.ResetAll
qtWinListIdent.OrdinalIdentifier = "Index"


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


qtWinListIdent.AssistiveProperties.RemoveAll
qtWinListIdent.AssistiveProperties.Add "all items"
qtWinListIdent.AssistiveProperties.Add "width", 1
qtWinListIdent.AssistiveProperties.Add "height", -1
qtWinListIdent.AssistiveProperties.MoveToPos 2, 1

qtWinListIdent.EnableSmartIdentification = True
If qtWinListIdent.BaseFilterProperties.Count = 0 Then
    qtWinListIdent.BaseFilterProperties.Add "x"
    qtWinListIdent.BaseFilterProperties.Add "y"
End If
qtWinListIdent.OptionalFilterProperties.Add "abs_x", 1
qtWinListIdent.OptionalFilterProperties.Add "abs_y", 2

Set qtWinListIdent = Nothing
Set qtIdent = Nothing
Set qtApp = Nothing

moshuang 发表于 2012-9-5 16:41:18

回复 18# xjwldlover


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

xjwldlover 发表于 2012-9-5 17:59:26

回复xjwldlover


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

这段代码的意思就是取控件WinList,重新定义控件的强制识别属性、辅助识别和智能识别标志。
页: [1] 2
查看完整版本: QTP对一些控件的识别都用什么属性