2011-08-16 62 views
11

的存在下,使用硒2.4.0之前,我有下面的代碼工作:硒2.4.0,如何檢查警報

alert = page.driver.browser.switch_to.alert 
if alert.text 
    .... 
end 

硒2.4.0包含的變化「*籌集switch_to.alert當沒有警報存在。「,所以我得到一個No alert is present (Selenium::WebDriver::Error::NoAlertOpenError)例外。

如何使用selenium-web-driver 2.4.0檢查是否存在警報?

回答

19

這裏有一個選項:

driver.switch_to.alert.accept rescue Selenium::WebDriver::Error::NoAlertOpenError 

這將單擊確定警覺如果存在,否則將無法正常(默默)。

+1

不幸的是,這是我要的最好方式用水豚做這個。但我不得不稍微調整一下:page.driver.browser.switch_to.alert.accept rescue Selenium :: WebDriver :: Error :: NoAlertPresentError – jackocnr

+0

謝謝你們這麼多!我已經花了數小時的時間試圖讓我的規格運行,這沒有把戲:) –

+0

這與@ jackocnr的建議,應該是IMO接受的答案。 – mattsch

1
status = true 
while (status) 
    alert = driver.switch_to.alert rescue "exception happened" 
    if (alert == "exception happened") 
     status = true 
     alert = "nothing happened" 
    else 
     status = false 
    end 
end 

沒有直接的方法來檢查警報是否存在。使用上述方法,您可以檢查警報是否存在。它會出來while循環的一次警示存在

6

我實現處理這在Ruby中,我認爲方法是很乾淨:

def alert_present? 
    begin 
    session.driver.browser.switch_to.alert 
    puts "Alert present! Switched to alert." 
    true 
    rescue 
    puts "No alert present." 
    return false 
    end 
end 
+0

我應該補充一點:這裏的'會話'代表一個水豚會議,但如果你離開'會議'部分,顯然這隻適用於硒。 – aceofbassgreg

6
WebDriverWait wait = new WebDriverWait(driver, 18); 
wait.until(ExpectedConditions.alertIsPresent()); 
相關問題