1. 程式人生 > >Selenium專題—彈出框處理

Selenium專題—彈出框處理

頁面中遇到的彈出框,我一般把它分為兩種方式處理:
1、alert彈出框
2、非alert彈框
給出的程式碼中基本能處理所有頁面的各種彈框。

1、alert彈框

這種彈出框處理應該毫無難度,網上也有很多介紹的,這邊提供一個方法,見程式碼
程式清單

//處理潛在的1個alert(javascript彈出框)
public boolean dealPotentialAlert(WebDriver driver,boolean option) {
//是否存在
boolean flag = false;
//異常捕獲
try {
    Alert alert = driver.switchTo().alert();
    //判斷是否存在alert彈框
    if (null == alert){
        throw new NoAlertPresentException();
    }
    //異常捕獲
    try {
        //確認or取消
        if (option) {
            //確認
            alert.accept();
            System.out.println("Accept the alert: " + alert.getText());
        } else {
            //取消
            alert.dismiss();
            System.out.println("Dismiss the alert: " + alert.getText());
        }
        flag = true;
    } catch (WebDriverException e) {
        if (e.getMessage().startsWith("Could not find")){
            System.out.println("There is no alert appear!");
        }else{
            throw e;
        }
    }
} catch (NoAlertPresentException e) {
    System.out.println("There is no alert appear!");
}
return flag;
}

2、非alert彈框

不管是JS自定義的彈出框還是windows彈出框,下面給出的方法都能準確定位

//處理多個非alert彈窗
public static boolean testNewWindows(WebDriver driver){
//當前視窗控制代碼
String currentHandle = driver.getWindowHandle();
//得到所有視窗的控制代碼
Set handles = driver.getWindowHandles();
//不包括當前視窗
handles.remove(currentHandle);
//存在視窗
if (handles.size() > 0) {
    try{
    //定位視窗
        dr.switchTo().window(handles.iterator().next());
        return true;
    }catch(Exception e){
        System.out.println(e.getMessage());
        return false;
    }
}
System.out.println("Did not find window");
return false;
}

//處理單個非alert彈窗
public static boolean testNewWindow(WebDriver driver){
    try{
        //定位視窗
        driver.switchTo().window(driver.getWindowHandles().iterator().next());
        return true;
    }catch(Exception e){
        System.out.println(e.getMessage());
        return false;
    }
}

+ 猜你喜歡...

===== 關於 DiggerPlus =====
DiggerPlus是國內新銳測試人垂直內容部落格,專注於挖掘測試工具,普及測試技術,專注於測試人能力提升,部落格上線後就受到廣大測試人的熱烈追捧;此外,DiggerPlus深度整合評測資源,揭祕科技資料和真相,讓讀者更懂科技,更好地把玩科技。 我們始終保持"獨立,客觀,嚴謹,優秀"的優良作風,努力為讀者帶來源源不斷的優質內容。想訪問更多酷斃的測試人網站?趕緊來DiggerPlus測試人網址導航看看吧!

===== DiggerPlus Team =====
DiggerPlus Team是DiggerPlus官方發起的團隊,這是一群熱愛科技,熱愛測試,喜歡深度挖掘的熱血測試人,他們是評測師,測試專家。 我們歡迎優秀的測試人

加入DiggerPlus Team。 加入DiggerPlus,可以成為我們的認證Dper,認證Dper擁有DiggerPlus獨一無二的專欄並得到個人展示。