2011-08-16 35 views
11

Trước khi sử dụng selen 2.4.0 tôi đã làm việc mã sau:selen 2.4.0, làm thế nào để kiểm tra sự hiện diện của một cảnh báo

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

Selenium 2.4.0 chứa các thay đổi "* Nâng cao trong switch_to.alert khi không có cảnh báo. ", vì vậy tôi nhận được một ngoại lệ No alert is present (Selenium::WebDriver::Error::NoAlertOpenError).

Làm cách nào để kiểm tra sự hiện diện của cảnh báo với trình điều khiển web selenium 2.4.0?

Trả lời

19

Đây là một lựa chọn:

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

này sẽ nhấp OK trên cảnh báo nếu một hiện diện, ngược lại nó sẽ thất bại một cách duyên dáng (âm thầm).

+1

Thật không may đây là cách tốt nhất mà tôi phải làm điều này với Capybara. Nhưng tôi đã phải tinh chỉnh nó một chút: page.driver.browser.switch_to.alert.accept cứu Selenium :: WebDriver :: Lỗi :: NoAlertPresentError – jackocnr

+0

Cảm ơn các bạn rất nhiều !!! Tôi đã dành hàng giờ ngày hôm nay cố gắng để có được thông số kỹ thuật của tôi để chạy và điều này đã làm các trick :) –

+0

Điều này, với gợi ý của @ jackocnr, nên được IMO trả lời chấp nhận. – 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 

Không có phương pháp trực tiếp nào để kiểm tra xem có cảnh báo hay không. Sử dụng phương pháp trên, bạn có thể kiểm tra xem cảnh báo có ở đó hay không. Nó sẽ đi ra khỏi vòng lặp while một lần cảnh báo hiện diện

6

tôi thực hiện một phương pháp để xử lý này trong Ruby mà tôi nghĩ là khá sạch:

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

Tôi nên thêm: 'phiên' ở đây đại diện cho phiên Capybara, mặc dù rõ ràng điều này sẽ chỉ hoạt động với Selenium nếu bạn rời khỏi phần 'phiên'. – aceofbassgreg

6
WebDriverWait wait = new WebDriverWait(driver, 18); 
wait.until(ExpectedConditions.alertIsPresent()); 
Các vấn đề liên quan