zoukankan      html  css  js  c++  java
  • Java+selenium之WebDriver常见特殊情况如iframe/弹窗处理(四)

    转自:https://www.cnblogs.com/andrew209/p/9017087.html

    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. 弹出窗口的处理

    // 只弹出一个窗口的情况 , 不需要传入任何参数 , 直接切换到下一个窗口
    // 得到当前窗口的句柄
    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.  处理对话框 alertconfirmprompt

       driver.switchTo().alert()可以得到alertconfirmprompt 对话框的对象,然后运用其方法对它进行操作。对话框操作的主要方法有:

    • getText() 得到它的文本值
    • accept() 相当于点击它的"确认"
    • dismiss() 相当于点击"取消"或者叉掉对话框
    • sendKeys() 输入值,这个 alertconfirm 不能用,会报错

    4. 富文本编辑器

    1 // 富文本编辑框的处理 
    2 driver.switchTo().frame("nameOrId"); // 定位到富文本输入框所在的 frame 
    3 JavascriptExecutor js = (JavascriptExecutor) driver;   
    4 js.executeScript("document.body.innerHTML='ABCDEFG'"); // 通过 js 赋值进去
  • 相关阅读:
    【7】用Laravel5.1开发一个简单的博客系统
    【6】Laravel5.1的migration数据库迁移
    【5】说说Laravel5的blade模板
    【4】优化一下【3】的例子,顺便说说细节
    【3】创建一个简单的Laravel例子
    【2】最简单的Laravel5.1程序分析
    【1】Laravel5.1 安装
    【0】Laravel 5.1 简介
    MySQL常用命令
    Windows8.1使用博客客户端写博客
  • 原文地址:https://www.cnblogs.com/xinxin1994/p/10907222.html
Copyright © 2011-2022 走看看