Java+selenium之WebDriver常見特殊狀況如iframe/彈窗處理(四)

1. iframe 的處理瀏覽器

查找元素必須在對應的 ifarme 中查找,不然是找不到的編輯器

1 // 傳入參數爲 frame 的序號,從0開始
2 driver.switchTo().frame(Int index); 
3 // 傳入參數爲 frame 的 ID 或者 Name 屬性 
4 driver.switchTo().frame(String nameOrId);
5 // 傳入參數爲 frameElement
6 driver.switchTo().frame(WebElement frameElement);
7 // 切換回父級 
8 driver.switchTo().defaultContent();

2. 彈出窗口的處理url

 1 // 只彈出一個窗口的狀況 , 不須要傳入任何參數 , 直接切換到下一個窗口
 2 // 獲得當前窗口的句柄
 3 String currentWindow = driver.getWindowHandle(); 
 4 // 獲得全部窗口的句柄
 5 Set<String> handles = driver.getWindowHandles(); 
 6 Iterator<String> it = handles.iterator(); 
 7 while (it.hasNext()) { 
 8     String handle = it.next(); 
 9     if (currentWindow.equals(handle)) 
10         continue;
11     WebDriver window = driver.switchTo().window(handle); 
12     log.info("title,url = " + window.getTitle() + "," + window.getCurrentUrl()); 
13  }
 1 // 切換到指定的窗口, 遍歷最多 10 次, 循環是爲了提升穩定性, 個別瀏覽器下有的時候一次遍歷找不到 ( String windowTitle ) 
 2 for (int a = 0; a < =9; a++) { 
 3      Set<String> windowHandles = driver.getWindowHandles(); 
 4       for (String handler : windowHandles) { 
 5          driver.switchTo().window(handler); 
 6            String title = driver.getTitle(); 
 7            if (windowTitle.equals(title)) { 
 8             a = 10;  
 9             break;
10            } 
11       } 
12 } 

3.  處理對話框 alert\confirm\promptspa

   driver.switchTo().alert()能夠獲得alert\confirm\prompt 對話框的對象,而後運用其方法對它進行操做。對話框操做的主要方法有:code

  • getText() 獲得它的文本值
  • accept() 至關於點擊它的"確認"
  • dismiss() 至關於點擊"取消"或者叉掉對話框
  • sendKeys() 輸入值,這個 alert\confirm 不能用,會報錯

4. 富文本編輯器對象

1 // 富文本編輯框的處理 
2 driver.switchTo().frame("nameOrId"); // 定位到富文本輸入框所在的 frame 
3 JavascriptExecutor js = (JavascriptExecutor) driver;   
4 js.executeScript("document.body.innerHTML='ABCDEFG'"); // 經過 js 賦值進去
相關文章
相關標籤/搜索