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 赋值进去
  • 相关阅读:
    软件测试人员的年终绩效考核怎么应对
    收藏
    顶踩组件 前后两版
    订阅组件
    hdu 1963 Investment 完全背包
    hdu 4939 Stupid Tower Defense 动态规划
    hdu 4405 Aeroplane chess 动态规划
    cf 414B Mashmokh and ACM 动态规划
    BUPT 202 Chocolate Machine 动态规划
    hdu 3853 LOOPS 动态规划
  • 原文地址:https://www.cnblogs.com/xinxin1994/p/10907222.html
Copyright © 2011-2022 走看看