前言:
今天兄弟们对“qtpnet对象识别错误”大概比较珍视,兄弟们都想要剖析一些“qtpnet对象识别错误”的相关资讯。那么小编同时在网上网罗了一些关于“qtpnet对象识别错误””的相关内容,希望各位老铁们能喜欢,大家快快来了解一下吧!当你测试APP时,QTP无法自动识别对象的时候,你都是采用什么方法解决的呢?以下根据我的经验总结出来的十种方式。
检查加载的加载项
check HP knowledge或SQAForums
使用.Object
尝试GetVisibleText
开发者是你的朋友
确保没有可用的补丁
尝试Low level recording录制
记录和运行设置
第四种录制方式:insight recording(支持智能图像识别的录制方式)
可扩展性
1.检查加载项(Add-ins):
这是非常基本的一件事,要确保QTP已经有了正确的加载项。 如果QTP只是将你的对象识别为标准的WinObject,这就意味着你缺少一个正确的add-in了。 有时QTP的“显示加载项”管理器在“启动”选项下,在工具\选项\常规下可能没有被选中。 未勾选此设置可能会导致你启动QTP后,错误地认为已经选择了所有正确的加载项。
检查方式:打开脚本并选择属性“关联加载项”下的文件\设置来仔细检查:确认列出了所有需要的加载项。
另外还要确保QTP在被测试的应用程序之前启动。 如果浏览器在QTP之前打开,QTP有时会无法识别Web应用程序。
2.惠普知识库 HP’s Knowledge base:
如果您的加载项没有问题,那么下一步就是搜索HP的知识库。 这似乎是显而易见的方法,但令人惊讶的是有超多人没有这样做。 没有什么比在一个脚本上花费几个小时后,才发现有一个现成补丁或者一个可以完美解决问题的方案在那里更糟糕的了。 有时我能根据我在这个知识库中见过信息,帮助一位工程师解决他苦苦纠结没有解决的问题,因此有时候我被他们誉为自动化的天才。但是通常,即使我告诉他们我是如何解决问题之后,他们下次遇到问题时仍然不检查KB。 如果在KB中没有找到,另一个很好的资源是SQAForums:
HP Self-solve Knowledge Search (需要能进去HP网站的权限)
3.使用.Object:
查看所有可用对象的操作(“标识属性”和“本地属性”方法)。 你会发现潜藏在一个对象的属性,可能有助于自动化。 使用.Object尝试尽可能多的操作,即使可能与您想要执行的操作看起来并不相关。
例如:我在识别应用程序的自定义.NET网格上的文本时遇到问题。 在对对象进行查阅( object spy)之后,我尝试了几种听起来很有希望的方法,结果我尝试了一种叫做GetViewStyleInfo的方法,效果惊人!
4.尝试GetVisibleText:
有时QTP不能识别使用GetROProperty(“text”)方法的对象中的文本。你可以使用GetVisibleText,GetTextLocation和Type方法作为最后的手段。
使用QTP的TYPE方法和GetTextLocation的组合,我创建了一个非常可靠的丰富的编辑框对象函数。 例如:
RichEditBoxICW "0","ENTER","=>","T","From date:"
wait 1
RichEditBoxICW "0","ENTER","Through","T^20","Through date:"
wait 1
RichEditBoxICW "0","ENTER","No=>","N","Do you want to queue this activity?"
'***********************************
'* RICHEDITBOX
'**********************************
'************************
'* ICW
'* @Documentation Used to perform valid actions on RichEdit objects.
'************************
Function RichEditBoxICW(index,action,lineText,valueToEnter,comment)
On Error Resume Next
'*****************************************
' SET OR PATH BASED ON ENV
'*****************************************
set strICWPath = Browser("CF").Page("CF").Frame("WorkSpace").SwfObject("IEController")
strParse = strings("PARSE",valueToEnter,"LEFT","","") 'this would return False string does not contain ^
Select Case UCASE(action)
Case "ENTER"
intXY = getTextXY(lineText)
arrXY = Split(intXY,"^")
strICWPath.WinObject("regexpwndclass:=RichEdit20A").Click arrXY(0),arrXY(1)
If strParse = "False" Then
Reporter.Filter = rfEnableAll
strICWPath.WinObject("regexpwndclass:=RichEdit20A").Type micRight
strICWPath.WinObject("regexpwndclass:=RichEdit20A").Type valueToEnter
strICWPath.WinObject("regexpwndclass:=RichEdit20A").Type micReturn
strReportMsg = "ENTERED ->" & valueToEnter
ELSE
strEnterValue = geString("PARSE",strValueToEnter,"LEFT","","")'Get Value to Enter
strRightCount = geString("PARSE",strValueToEnter,"RIGHT","","")'Get # of right keys to press before entering text
for nTabs = 1 to strRightCount
strICWPath.WinObject("regexpwndclass:=RichEdit20A").Type micRight
next
strICWPath.WinObject("regexpwndclass:=RichEdit20A").Type strEnterValue
strICWPath.WinObject("regexpwndclass:=RichEdit20A").Type micReturn
strReportMsg = "ENTERED ->" & strEnterValue
end select
End Function
'---------------------------------------------------------
'@Function Name: getTextXY
'@Documentation Return X and Y coordinates of text
'@Parameters: The text to find
'@Created By: Joe Colantonio
'@Return Values: X & Y coord separated by a ^
'@Example: intXY = getTextXY(strLineText)
'-------------------------------------------------------------
Function getTextXY(strTextToFindXYFor)
set strICWPath = Browser("CF").Page("CF").Frame("WorkSpace").SwfObject("IEController")
l = -1
t = -1
r = -1
b = -1
rc = strICWPath.WinObject("regexpwndclass:=RichEdit20A").GetTextLocation(strTextToFindXYFor, l, t, r, b)
getTextXY = r & "^" & t
End function
5.开发者是你的朋友:
应用程序的开发人员可以帮助你。 要求开发者公开一个方法或添加一个可以使自动化更容易的属性。
但在你提出要求之前,请确保你已经尝试过上述所有建议。 开发人员是很难攻克的一群人,相信你也真的不想用自己都能解的事情去惹恼他们。
我和一些很棒的程序员一起工作,只要我能够清楚地向他们解释我需要什么和为什么的时候,他们就会毫不犹豫地提供帮助。
6.确保没有可以帮助的补丁
有时只有QTP补丁才能解决对于物体识别的问题。 有时候新补丁还支持更新版本的AUT,如.NET或浏览器。
7.记录和运行
Mike G Marshall:另一件要检查的是自动化菜单下的”记录和运行“设置。 如果您在应用程序中尝试识别不符合规则的对象,它将显示为标准的Windows对象。
8.Low level recording
Michael te Wierik : “我不知道有多少次自己掉入寻找对象识别问题的解决方法的漩涡中——在录制时,请使用自动化菜单中的Low level recording。“
9.使用:insight recording
使用QTP的洞察录制,生成的脚本如下。
可以从对象库导出库文件,执行时动态导入
RepositoriesCollection.Add "d:\flash.tsr"
Browser("#").InsightObject("InsightObject").Click
该语句不支持描述编程。
标签: #qtpnet对象识别错误 #ftp打开文件找不到应用程序