Selenium專題—彈出框處理
阿新 • • 發佈:2019-02-06
頁面中遇到的彈出框,我一般把它分為兩種方式處理:
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獨一無二的專欄並得到個人展示。