2008-09-19 142 views
20

我們正在針對現有代碼庫運行Selenium迴歸測試,並且我們的Web應用程序中的某些屏幕使用中間步驟的彈出窗口。使用Selenium處理瀏覽器彈出窗口

目前我們使用的測試命令:

// force new window to open at this point - so we can select it later 
selenium().getEval("this.browserbot.getCurrentWindow().open('', 'enquiryPopup')"); 
selenium().click("//input[@value='Submit']"); 
selenium().waitForPopUp("enquiryPopup", getWaitTime()); 
selenium().selectWindow("enquiryPopup"); 

...其中工程大部分時間。偶爾測試將在waitForPopUp()線失敗,並

com.thoughtworks.selenium.SeleniumException: Permission denied 

任何人都可以提出一個更好,更可靠方法

此外,我們主要是如果您在* iehta模式下運行,那麼你要在這裏和那裏遇到了一些小問題上運行IE6和這些測試7.

+2

什麼是地獄與此線程是什麼呢?下面有5個不同的人試圖劫持它! – ryeguy 2009-10-22 21:26:39

回答

3

它的作品!只是爲了讓喜歡selenese的人們更容易。

這對我來說使用IE7(普通模式)。

什麼是一個驚人的麻煩。感謝天空中的意大利麪怪獸,或者我不可能在IE中使用這個工具。

<tr> 
    <td>getEval</td> 
    <td>selenium.browserbot.getCurrentWindow().open('', 'windowName');</td> 
    <td></td> 
</tr> 
<tr> 
    <td>click</td> 
    <td>buttonName</td> 
    <td></td> 
</tr> 
<tr> 
    <td>windowFocus</td> 
    <td>windowName</td> 
    <td></td> 
</tr> 
<tr> 
    <td>waitForPopUp</td> 
    <td>windowName</td> 
    <td>3000</td> 
</tr> 
<tr> 
    <td>selectWindow</td> 
    <td>windowName</td> 
    <td></td> 
</tr> 
1

。我們的工作是運行Selenium,而IE和AJAX似乎存在很多問題。

但是,這聽起來像是您遇到的問題是Selenium在完全加載之前嘗試訪問另一個窗口中的組件的問題。我不確定默認的超時範圍設置爲什麼,但您可能想嘗試將其增加到60(60000毫秒)左右以解決問題。

除此之外,我建議在Firefox中運行測試(使用* chrome),因爲它會產生更可靠的結果,但有時由於業務需求而無法實現。

+0

哦,相信我,我希望我們可以在Firefox中運行它!但我們99%的用戶使用IE,所以這是測試的優先考慮... 我們使用* iexplore,而不是* iehta。我不知道有什麼不同? – brasskazoo 2008-09-19 03:18:24

+0

* iehta和* chrome允許https支持。這樣您就不必擔心證書帶來的問題。 – Josh 2008-09-19 03:48:10

0

我只是試用,增加另一個硒功能,windowFocus()

// force new window to open at this point - so we can select it later 
selenium().getEval("this.browserbot.getCurrentWindow().open('', 'enquiryPopup')"); 
selenium().click("//input[@value='Submit']"); 
selenium().windowFocus("enquiryPopup"); 
selenium().waitForPopUp("enquiryPopup", getWaitTime()); 
selenium().selectWindow("enquiryPopup"); 

,當我跑在本地測試成功,但只有與所有這些方法調用 - 創建/聚焦/等待/選擇。

我正準備讓構建服務器運行所有測試,如果成功,我將使用它的庫函數......!

+0

請讓我們知道它是否工作! – mcherm 2008-09-22 20:34:22

-1

嘗試在導致問題的調用中添加一些等待語句。

我有同樣的錯誤,我能夠前的唯一途徑可靠解決這些問題是通過向System.Threading.Thread.Sleep電話(5000)..

0

我需要在彈出窗口中選擇一個iframe並填寫表單。 我在selenium無法找到我的iframe時使用selectWindow cmd時遇到了問題,所以我刪除了該命令。

這Selenese的工作很適合我(其中的iframe標題和id = account_frame):

<tr> 
    <td>click</td> 
    <td>//a[@class='item_add']</td> 
    <td></td> 
</tr> 
<tr> 
    <td>windowFocus</td> 
    <td>account_frame</td> 
    <td></td> 
</tr> 
<tr> 
    <td>waitForPopUp</td> 
    <td>account_frame</td> 
    <td>10000</td> 
</tr> 
相關問題