2011-04-25 87 views
1

我需要操作彈出窗口&使用Java或 下載IE瀏覽器對話框基於Javascript的自動化解決方案。Java或Javascript中的窗口對話框和彈出窗口處理

我嘗試過硒2,但它不能正常工作,所以任何其他建議相同。 其實selenium2並沒有提供適當的警報/下載對話框處理 我正在考慮使用一些其他的JavaScript/Java解決方案。

隨着下載對話框:我需要將下載的文件保存到特定的位置。 使用警報對話框:我需要檢查顯示的消息並單擊特定按鈕。

任何建議表示讚賞。 謝謝。

+0

爲此使用JS。 Java將不得不使用JS,所以它只會增加一層複雜性和失敗的機會。 – 2011-04-25 10:40:18

+0

@Andrew Thompson:感謝您的回覆,現在我可以使用selenium2驅動程序自己處理警報/確認對話框,但對於IE下載對話框窗口,我使用了AutoIT腳本作爲解決方法。仍在尋找那聰明的解決方案;) – SmartSolution 2011-04-26 18:38:38

回答

2

我使用硒1,它很適合在我的應用程序中處理彈出窗口。

//Click on browse file button, open a popup 
    selenium.click("//input[@value='Browse...']"); 

    //waiting for popup to load 
    selenium.waitForPopUp("_Dialog", "30000"); 

    //selecting the popup by passing window name 
    selenium.selectWindow("name=_Dialog"); 

    //click a link inside pop up window 
    selenium.click("link=something"); 

    //Put other popup operations here 

    //click cancel button for pop up 
    selenium.click("cancel"); 

    //back to main window 
    selenium.selectwindow("null") 

從警報框得到消息,使用selenium.getAlert();。這會將包含在警告框中的消息作爲字符串返回。

此外,有時您需要檢查在切換到它之前是否發生過警報。

 int noofWindows = selenium.getAllWindowNames().length; 
     if (noofWindows > 1){ 
     //selects the second window 
     selenium.selectWindow(selenium.getAllWindowIds()[2]); 
     //Prints the message in the alert window 
     System.out.println(selenium.getAlert()); 
     } 

如果不是必須在IE中運行測試,使用firefox(*鉻),並執行代碼之前關閉所有其他窗口。

我希望這可以幫助你。

*所有提到的代碼用於處理JavaScript彈出窗口。我不確定這是否適用於Vb腳本。

編輯

我認爲IE下載彈出一個窗口事件,因此不能被直接硒處理,爲此,你將不得不使用Java AWT或AutoIt的。

AutoIt腳本應該是類似的東西,以

WinWaitActive(windowTitle) 
ControlClick(windowTitle,"",buttonName) 

並將其保存爲IEsave.exe。注意:我沒有試過這個AutoIT腳本。

現在您已經從您的程序執行IEsave.exe。我在這裏使用java。

java.lang.Runtime.getRuntime().exec("c:/IEsave.exe"); 

這將執行該文件,該文件反過來將處理窗口的保存按鈕事件。

您可以創建類似的exe文件來處理其他窗口的事件。

希望這可以解決您的問題。

+0

感謝答覆,其真正有用的,其實我使用selenium2 WebDriverBackedSelenium運行在IE8的測試中,我能夠操縱警告/確認對話框,但仍不能處理IE下載對話框有'打開'/'保存'/'取消'按鈕的窗口,我需要點擊'保存',你能幫我解決這個問題嗎?如有可能,請提供一些具體細節的代碼。謝謝。 – SmartSolution 2011-04-26 18:35:44

+0

@SmartSolution - 我已經更新了答案。請參考它,希望這有助於。 – 9ikhan 2011-04-27 05:42:38

+0

謝謝9ikhan。我仍然面臨這個AutoITscript的問題。它在RDP會話打開時適用於本地系統和RDP。但是,當RDP會話關閉時,AutoITscript掛起。你知道任何解決方法讓AutoITscript在關閉的RDP上工作嗎? – SmartSolution 2011-05-06 06:20:35