2011-08-26 98 views
2

我有一個web應用程序,它會生成一個JS消息 '您確定要從此頁面導航嗎?'當你嘗試打開一個新的頁面。 我知道我可以通過如何處理'您確定要離開此頁面'離開此頁面嗎?

Selenium.getAlert(); 

處理該郵件(或它的一些修改,我還沒有嘗試過)

但我的主要問題是,當我離開這個頁面此消息僅生成。 在硒我可以用

Selenium.open("new address"); 

離開頁面
Selenium.back(); 

於是我就用這樣的代碼

Selenium.open("new address"); 
Selenium.getAlert(); 

但問題是,Selenium.open沒有完成,轉到程序中的下一個代碼行,直到新頁面完全加載,但是隻有當程序進入下一個代碼行並處理此警報時才能加載該頁面。所以這是一個尷尬的局面,我不知道如何處理它。

+0

這會有幫助嗎? http://shivasoft.in/view_topic.php?id=101 – Asken

+0

你可能看看這裏:http://stackoverflow.com/questions/6852732/selenium-webdriver-how-to-close-browser-popup –

回答

1

我不認爲它可以完成,完全停留在Selenium RC API中。我有類似的情況,我通過在open()之前啓動一個AutoIt腳本,等待提示並回答它。這隻適用於Windows,但如果你需要其他系統的東西,我相信有相當的工具。

Selenium一直存在警報和確認問題(這是 - 確認有確定/取消選擇),會導致頁面加載發生問題。甚至還有一個錯誤消息中提供的古老錯誤編號,說明它無法捕捉它們。

+0

是的,我也想到使用AutoIt腳本來處理這種情況。它不漂亮,只在窗戶上,但它的工作 – ShockwaveNN

0

用途:

openAndWait(..) 

也許這等SO question會幫助你。

+1

在當前版本的硒中,現在有openAndWait動作,因爲我可以從文檔中理解「AndWait」後綴是隱含的。 – ShockwaveNN

+1

「AndWait」的東西僅用於Selenium IDE,它在Selenium RC中不受支持。 –

+0

s/now/no /海報確實需要像openAndDontWait()這樣的東西,只要它存在。 – joeytwiddle

0

我不知道這是否可行,但這是一個想法。你可以嘗試這樣的:

try { 
    driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS); 
    Selenium.open("new address"); 
} catch (Exception e) { 
    // Should throw after 1 second 
} 

// Now we may be able to interact with the alert. 
Selenium.getAlert(); 
相關問題