51Testing软件测试论坛
标题:
QTP对一些控件的识别都用什么属性
[打印本页]
作者:
moshuang
时间:
2012-8-30 13:25
标题:
QTP对一些控件的识别都用什么属性
比如对web控件,对page主要是用index识别,webEdit由name识别,button由name识别,webElement由intertext识别。那flex的一些常用控件由哪个属性识别??
作者:
xjwldlover
时间:
2012-8-30 13:37
本帖最后由 xjwldlover 于 2012-8-30 13:41 编辑
编辑了半天,我还是放弃回答了,你对QTP的对象识别方式理解貌似有点偏差~
没能帮到你
作者:
joykao
时间:
2012-8-30 15:45
介个没有什么规定的说法吧,这个问题很难回答。。。。只要能识别对象,你管它用的是什么属性去识别的啦。
作者:
moshuang
时间:
2012-8-30 16:56
回复
2#
xjwldlover
难道不是这样子吗?对一些控件在object identification里面是写好了由哪些属性来识别这个控件的呀。
作者:
xjwldlover
时间:
2012-8-30 17:19
回复
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
Object Identification 的作用我认为有三个功能,如有错误请指正,谢谢
①辨识对象类型,比如webEdit,JavaButton什么的
②便于修改对象库。虽然QTP本质是使用对象属性来匹配页面对象。但如果在对象库中所有的对象都是一个类型,一个样子,你怎么去修改。挨个看属性还不如不用这个工具。于是QTP使用Mandatory属性来确定这个控件的类型和显示名称。你可以很容易找到这个对象并修改。
③辨识出对象类型后提供对象的方法。比如你webButton().Object加一个点后,后面提示那么多方法。
作者:
moshuang
时间:
2012-8-31 14:37
回复
6#
xjwldlover
非常非常感谢你的回答。明白了。
作者:
moshuang
时间:
2012-8-31 14:37
回复
5#
xjwldlover
我不太明白这一句话“给对象库的对象添加属性,比如Hwnd,来唯一确定这个对象。”。Hwnd什么意思?
作者:
moshuang
时间:
2012-8-31 14:40
回复
5#
xjwldlover
我这样问,是因为很多flex控件的属性里面有automationindex和automationname,这样子我的脚本总因为这个index无法回放成功。我删除了有时候它又说对象找不到。真是不知道该怎么做了。这个automationindex是加载页面时后自动生成的还是开发那边自动生成的,一旦返还给开发,这些就又变了??
作者:
xjwldlover
时间:
2012-8-31 15:30
回复
8#
moshuang
hwnd是web对象的一个句柄属性,可以唯一标识这个对象。本质上是和name一样,是Object的一个属性,只不过它具有唯一性。但它是会变的哦,所以可能不太好抓。一般只有在确定browser时使用它。其他类型的对象我就不知道是否有这个属性了,推测应该有类似的属性吧
作者:
moshuang
时间:
2012-8-31 16:15
回复
10#
xjwldlover
能举个例子吗?针对browser的。
作者:
xjwldlover
时间:
2012-8-31 16:51
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
回复
12#
xjwldlover
那它也就是唯一标示IE,它不能唯一标示控件呀
作者:
xjwldlover
时间:
2012-9-3 17:33
回复
13#
moshuang
呵呵 就是举个例子,控件肯定也有其他可以唯一标识的‘属性集’啊。
作者:
moshuang
时间:
2012-9-4 15:16
回复
14#
xjwldlover
唯一的属性,我的对象库里的属性我去掉automationindex值后是可以的。可是,我就是想知道怎样在object identification里面去掉这个属性。可是在那里偏偏不能用这个configure,你说的英文帮助文档里有吗?传给我吧。F1里没有[attach]81250[/attach]
作者:
xjwldlover
时间:
2012-9-4 18:06
本帖最后由 xjwldlover 于 2012-9-5 10:15 编辑
找到了[attach]81256[/attach]
好像这个文件无法独立运行,如果不行的话,你就到你自己QTP安装目录里找这个英文文档吧
HP\QuickTest Professional\help
作者:
qtp老菜鸟
时间:
2012-9-5 00:51
object identification可以查看的。。
作者:
xjwldlover
时间:
2012-9-5 11:25
这事整愁了,我直接把帮助文档里的这段示例发给你吧
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#
xjwldlover
这代码完全看不懂呀。我的意思是说,能不能怎样让我把flex插件里的configure项改动,让他的智能识别项减少,没有automationindex,这样脚本就不用每次去掉这个值。这段代码和这里有关系吗?谢谢你了,太谢谢了。
作者:
xjwldlover
时间:
2012-9-5 17:59
回复 xjwldlover
这代码完全看不懂呀。我的意思是说,能不能怎样让我把flex插件里的configure项 ...
moshuang 发表于 2012-9-5 16:41
这段代码的意思就是取控件WinList,重新定义控件的强制识别属性、辅助识别和智能识别标志。
作者:
moshuang
时间:
2012-9-6 17:14
回复
20#
xjwldlover
那怎么更改?
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2