1

我对 QTP 11 有一个奇怪的问题。以下代码到目前为止工作,但突然停止工作并抛出 Object does not support this property or method.: 'objPage.Link' for the line with 'if link exists'

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

所以目前我的测试只是打开浏览器并在我尝试调试事物时单击一个链接,但它仍然失败或随机通过。运行错误指示带有“设置 objLink”的行。进一步调试的任何想法?如果重要的话,我在 QTP11 和 IE8 上。

4

2 回答 2

1

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

set objLink = objPage.Link("class:=menu_link_tab_.*", "html id:=.*DesktopTab")
If objLink.Exist(3) Then

从您的评论来看,您似乎是objPage在与使用它的位置不同的位置创建的,我建议确保对象可以正常到达。

于 2013-02-06T09:04:21.440 回答
0

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

于 2013-02-15T08:43:42.200 回答