Java+selenium之WebDriver常见特殊状况如iframe/弹窗处理(四)

转自:http://www.javashuo.com/article/p-qcypaefk-du.htmlhtml

1. iframe 的处理浏览器

查找元素必须在对应的 ifarme 中查找,不然是找不到的编辑器

// 传入参数为 frame 的序号,从0开始
driver.switchTo().frame(Int index); 
// 传入参数为 frame 的 ID 或者 Name 属性 
driver.switchTo().frame(String nameOrId);
// 传入参数为 frameElement
driver.switchTo().frame(WebElement frameElement);
// 切换回父级 
driver.switchTo().defaultContent();

2. 弹出窗口的处理url

// 只弹出一个窗口的状况 , 不须要传入任何参数 , 直接切换到下一个窗口
// 获得当前窗口的句柄
String currentWindow = driver.getWindowHandle(); 
// 获得全部窗口的句柄
Set<String> handles = driver.getWindowHandles(); 
Iterator<String> it = handles.iterator(); 
while (it.hasNext()) { 
    String handle = it.next(); 
    if (currentWindow.equals(handle)) 
        continue;
    WebDriver window = driver.switchTo().window(handle); 
    log.info("title,url = " + window.getTitle() + "," + window.getCurrentUrl()); 
 }
// 切换到指定的窗口, 遍历最多 10 次, 循环是为了提升稳定性, 个别浏览器下有的时候一次遍历找不到 ( String windowTitle ) 
for (int a = 0; a < =9; a++) { 
     Set<String> windowHandles = driver.getWindowHandles(); 
      for (String handler : windowHandles) { 
         driver.switchTo().window(handler); 
           String title = driver.getTitle(); 
           if (windowTitle.equals(title)) { 
            a = 10;  
            break;
           } 
      } 
}

3.  处理对话框 alert\confirm\promptspa

   driver.switchTo().alert()能够获得alert\confirm\prompt 对话框的对象,而后运用其方法对它进行操做。对话框操做的主要方法有:code

  • getText() 获得它的文本值
  • accept() 至关于点击它的"确认"
  • dismiss() 至关于点击"取消"或者叉掉对话框
  • sendKeys() 输入值,这个 alert\confirm 不能用,会报错

4. 富文本编辑器htm

1 // 富文本编辑框的处理 
2 driver.switchTo().frame("nameOrId"); // 定位到富文本输入框所在的 frame 
3 JavascriptExecutor js = (JavascriptExecutor) driver;   
4 js.executeScript("document.body.innerHTML='ABCDEFG'"); // 经过 js 赋值进去
相关文章
相关标签/搜索