2017-12-18 96 views
0

如何處理硒中的多個警報彈出確認。例如:如果接受彈出窗口,它會一次又一次詢問同一個窗口。如果在點擊第5次確認/解散後彈出窗口關閉,我們如何處理相同的問題。如何處理硒中的多個警報彈出確認?

所以,請幫我在這...

+0

你能分享多次彈出的彈出窗口嗎?它是警報或模式對話框還是彈出式對話框? – DebanjanB

+0

這是面試問題之一,彈出窗口可能會接受第一次或任何。所以我們想嘗試直到關閉彈出窗口。你能幫我解決這個問題嗎? –

回答

1

如果你知道的時候確切數目此警報會彈出,你可以使用一個簡單的循環與重的硬編碼數。例如:

int retries = 5; 

while (retries > 0) { 
    alertTriggerButton.click(); 

    Alert alert = driver.switchTo().alert(); 
    alert.accept(); 

    retries--; 

} 

你應該修改這個代碼,以確保它根據自己的網頁行爲,認爲像響應時間考慮作品(換句話說 - 如果需要增加相應的等待時間)。

0

你可以使用while。您正在檢查警報是否存在,每當它出現時,都會根據您提供的布爾值來解決它。當再也沒有新的警報時,它會斷開並繼續。

public static void resolveAllAlerts(WebDriver driver, int timeout, boolean accept) { 
    while (isAlertPresent(driver, timeout)) { 
     resolveAlert(driver, accept); 
    } 
} 


private static boolean isAlertPresent(WebDriver driver, int timeout) { 
    try { 
     Alert a = new WebDriverWait(driver, timeout).until(ExpectedConditions.alertIsPresent()); 
     if (a != null) { 
      return true; 
     } else { 
      throw new TimeoutException(); 
     } 
    } catch (TimeoutException e) { 
     // log the exception; 
     return false; 
    } 
} 

private static void resolveAlert(WebDriver driver, boolean accept) { 
    if (accept) { 
     driver.switchTo().alert().accept(); 
    } else { 
     driver.switchTo().alert().dismiss(); 
    } 
}