1

QTP 11で奇妙な問題が発生しました。これまでのところ、次のコードは機能していましたが、突然機能を停止し、オブジェクトがこのプロパティまたはメソッドをサポートしていません。

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回実行するだけで、「オブジェクトはこのプロパティまたはメソッドをサポートしていません」というメッセージでランダムに失敗します。

objPageとobjBrowserを設定するstartBrowser関数があります。

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

そのため、現時点では、テストでブラウザを開いてリンクをクリックするだけで、デバッグを試みますが、それでも失敗するか、ランダムに合格します。実行エラーは、「SetobjLink」の行を示しています。さらにデバッグするためのアイデアはありますか?重要な場合は、QTP11とIE8を使用しています。

4

2 に答える 2

1

エラーから、このプロパティまたはメソッドはサポートされていませんobjPage.Link。問題は.Exist行の一部ではなく、一部にあるように見え.Linkます(行を2行に分割して、どちらが失敗するかを確認できます)。

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 に答える