QTP Link对象不支持Exist属性

时间:2013-02-05 13:53:54

标签: vbscript qtp

我对QTP 11有一个奇怪的问题。到目前为止,下面的一段代码工作,但是突然停止工作并且抛出了Object不支持这个属性或方法:'objPage.Link'用于'if链接存在的行“

Set objBrowser = Browser("creationtime:=" & Desktop.ChildObjects(oDesc).Count - 1 & "")
Set objPage = objBrowser.Page("title:=.*")
If objPage.Link("class:=menu_link_tab_.*", "html id:=.*DesktopTab").Exist(3) Then
   msgbox "ok"
End If

任何人都可以告诉我什么是错的和/或如何做对吗?

编辑:我解决了这个问题,但仍然不知道发生了什么。我只是从QTP脚本中剪切了这部分并将其粘贴到记事本中,然后将其从记事本复制到QTP。一切正常。我没有改变任何事情......欢迎任何想法到底发生了什么。

另一个编辑:问题随机重现。没有任何改变,我可以运行测试10次,让它随机失败“对象不支持此属性或方法”消息

我有一个startBrowser函数,我在其中设置了objPage和objBrowser:

Function startBrowser(vURL)
   Dim oDesc
   Set IE = CreateObject("InternetExplorer.Application")

   IE.Visible = True
   IE.Navigate vURL
   Window("hwnd:=" & IE.HWND).Maximize
   Set oDesc = Description.Create
   oDesc( "micclass" ).Value = "Browser"
   If Desktop.ChildObjects(oDesc).Count > 0 Then
       Set objBrowser = Browser("creationtime:=" & Desktop.ChildObjects(oDesc).Count - 1 & "")
   End If
   Set objPage = objBrowser.Page("title:=.*")
End Function

我已经使用GetROProperty添加了许多msgbox,以验证对象是否正常。他们似乎是。

现在我点击链接的功能如下:

Function clickMainMenuLink(vIdentifier)
   Set objLink = objPage.Link("class:=menu_link_tab_.*", "html id:=.*" & vIdentifier, "index:=0")
   If objLink.Exist(timeOut) Then
       objLink.Click
       Else
       reporter.ReportEvent micFail, "Click the " & vIdentifier & " menu link", "Cannot find the " & vIdentifier & " menu link"
       ExitTestIteration
   End If
End Function

所以目前我的测试只是打开浏览器并点击链接,因为我尝试调试该东西,但它仍然失败或随机传递。运行错误表示“Set objLink”行。有进一步调试的想法吗?如果重要的话,我会使用QTP11和IE8。

2 个答案:

答案 0 :(得分:1)

根据您的错误不支持此属性或方法:objPage.Link 看起来问题不在于行的.Exist部分,而是{{1 part(您可以通过将该行分成两行并查看哪个失败来验证这一点

.Link

从您的评论中看来,您在与您使用它的位置不同的位置创建了set objLink = objPage.Link("class:=menu_link_tab_.*", "html id:=.*DesktopTab") If objLink.Exist(3) Then ,我建议您确保该对象正常运行。

答案 1 :(得分:0)

谢谢Motti,你的理由是正确的。问题出在objPage部分。尽管我可以在函数QTP中读取objPage的每个属性,但有时只是没有将此objPage看作Page对象。我想这与未明确声明类型有关,但这只是猜测。作为一个肮脏的解决方法,我现在在每个函数中设置objBrowser和objPage,它可以100%工作。