2009-09-21 43 views
2

我正在尋找想法來觸發使用QTP的飛出菜單的操作。在QTP中測試飛出菜單

我正在測試使用QTP的Web應用程序。該應用程序具有「級聯」或分層式彈出式菜單。

例如Options->Preferences

重新編碼QTP會識別菜單層次結構上的終點(如「首選項」)。 但是在運行測試時,解僱WebElement("Preferences").Click不起作用。

如果我打電話Link("Options").FireEvent ("onmouseover")它拉下菜單,然後我可以突出顯示偏好項目,但即使在拉下菜單後調用點擊仍然無法觸發菜單操作。

任何想法觸發這些菜單項上的點擊操作將是有用的。

問候,
Adarsha

回答

2

對於鬆動而QTP在執行多任務的原因,我沒有Motti的suggesiton實現。因此,我終於開始瀏覽HTML代碼,以查看java腳本所期望的鼠標事件。事實證明,我需要調用下面的序列:

Link("Options").FireEvent ("onmouseover") 
WebElement("Preferences").FireEvent ("onmouseover") 
WebElement("Preferences").FireEvent ("onClick") 

這招的作品真的不錯,但這裏的風險是,如果他們改變任何東西大幅度(instaed說LITENING的,如果他們使用onmousedown事件來點擊)我需要調整測試腳本。

+1

您可以考慮使用Web擴展(這樣你可以在菜單項參數化)這個菜單中創建自定義的支持。 – Motti 2009-09-27 08:15:15

5

如果Click沒有做的工作則有可能是web應用程序期待不受QTP模擬的其他事件。解決方法之一就是打開網頁的設備回放模式:

Setting.WebPackage("ReplayType") = 2 

這條線的測試後,每次QTP看到一個Click一步,將通過在元素上移動鼠標和模擬重播點擊這樣所有人類發射的事件都會被解僱。

要返回到默認事件回放模式下設置"ReplayType"爲1

+0

通過設置裝置應答模式回覆鼠標動作,你將失去QTP時正在執行其他事情上工作的能力。我有雙顯示器,通常讓QTP在輔助顯示器上運行,同時處理其他事情。 但它的一個不錯的LITTEL伎倆來考慮。 – Adarsha 2009-09-27 02:27:38

+1

您是否嘗試過在虛擬機中使用QTP?這種使用設備重放的方式不會盜取你的鼠標。 – Motti 2009-09-28 18:58:17

+0

這是否也意味着,如果按鈕不可見的屏幕上,因爲它是低於倍(即:你需要滾動才能看到它),QTP會發現它? – Riddari 2010-08-09 01:10:59

0

這是我做過一個類似的問題:

Set desPrefLink = Description.Create 
    desPrefLink("micclass").value = "Link" 
    desPrefLink("innertext").value = "Preferences" 

Browser(X).Page(Y).Link(desPrefLink).Click() 

它可能不是一個更動態JavaScript菜單工作,雖然。

+0

沒錯。在我的情況下,直到onmouseover事件上選項鍊接解僱desPrefLink不是QTP可見。 – Adarsha 2010-08-08 21:08:10

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 
+0

請在發佈回覆時嘗試格式化代碼。這並不難。同樣,如果你看看Motti的答案,他已經建議設備重播模式。這有它自己的問題,一個是它會在腳本運行時偷走鼠標,另一個是它非常基本的做事方式,因爲你正在迴應對象的物理座標。 – Adarsha 2010-12-30 17:52:30

0

我有稍微不同的方式處理類似的情況,第一次點擊父鏈接Options上,然後觸發fireevent onclick與序標識符

eg: browser().page().link(options).click

browser().page().link("name:=preferences","html tag:=A","index:=X").firevent "onclick"

的幫助這將非常加載所需的父鏈接&會在點擊 - 希望這有助於引發火災事件很有幫助。