質問
私はQTPを使用してフライアウトメニューのアクションをトリガーするためのアイデアを探しています。
私は、QTPを使用してWebアプリケーションをテストしています。アプリケーションは、「カスケード接続」または階層フライアウトメニューました。
例えば。 Options->Preferences
QTPを再コーディングすると、メニュー階層上のエンドポイントを認識しながら(「環境設定」と言います)。
テストの実行中しかし、WebElement("Preferences").Click
を発射することはできません。
Link("Options").FireEvent ("onmouseover")
呼んでも、メニューをプルダウンした後、クリックを呼び出し、それがメニューをプルダウンし、その後、私は環境設定項目を強調表示することができますが、場合メニューアクションをトリガーするために失敗します。
任意のアイデアは有用であろうこれらのメニュー項目のクリックアクションをトリガします。
よろしく、
Adarsha
解決 2
QTPの実行中にマルチタスクを失うことの理由のために、私はMottiのsuggesitonで実装されていませんでした。だから私は、マウスイベントは、Javaスクリプトが期待されているかを確認するためにHTMLコードを経由することになったinstaed。それは私が以下のシーケンスを呼び出す必要が判明します:
Link("Options").FireEvent ("onmouseover")
WebElement("Preferences").FireEvent ("onmouseover")
WebElement("Preferences").FireEvent ("onClick")
このトリックは、本当に素晴らしい作品が、ここでのリスクは、彼らが(たとえば、彼らはれるonmousedown使用している場合はクリックしてliteningのinstaed)大幅に任意のものを変更した場合、私はテストスクリプトを微調整する必要がある。
他のヒント
Click
が仕事をしていない場合は、その後、ウェブアプリはQTPでシミュレートされていないことを期待している、おそらく他のイベントがあります。この問題を回避するための一つの方法は、Webののデバイスの再生をオンにすることです。のモード:
Setting.WebPackage("ReplayType") = 2
QTPはClick
のステップを見ている時はいつでもこの行の後にテストでは、要素の上にマウスを移動し、人間が発射されたすべてのイベントが発行されますので、クリックをシミュレートして、それを再生します。
バックデフォルトのイベントの再生モードに行くために1に"ReplayType"
を設定します。
私は1つの以上のオプションを持っています。任意のオブジェクトをクリックして、これを使用します。
Set objMenu = Browser("Browser").Page("Pagel").WebElement("Menu_ELM")
Set objDeviceReplay1 = CreateObject("mercury.devicereplay")
x = objMenu.GetROProperty("abs_x")
y = objMenu.GetROProperty("abs_y")
objDeviceReplay1.MouseClick x + 35 , y + 5,0
Set objDeviceReplay1 = Nothing
ここで私が同様の問題にやったことだ。
Set desPrefLink = Description.Create
desPrefLink("micclass").value = "Link"
desPrefLink("innertext").value = "Preferences"
Browser(X).Page(Y).Link(desPrefLink).Click()
これはしかし、よりダイナミックなJavascriptのメニューでは動作しない場合があります。
私は似たような状況がわずかに異なる方法で扱わなかった、親リンクOptions
上の最初のクリックが、その後、序数識別子の助けを借りてfireevent onclick
をトリガー
eg: browser().page().link(options).click
browser().page().link("name:=preferences","html tag:=A","index:=X").firevent "onclick"
このは、理想的に意図した親リンクをロードすると、このことができますクリック - 希望に火災イベントをトリガーに役立つだろう。