我对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。
答案 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%工作。