zoukankan      html  css  js  c++  java
  • java之web自动化,特殊元素定位(alert,iframe,多窗口)

    特殊元素定位

    1.模态框

    模态框又叫模态对话框,是指在用户想要操作对话框以外的界面时,必须首先对该对话框进行响应,比如点击”确定“或者”取消“按钮,把这对话框关闭

    ①alert (警告框)

    ②confirm (确认框)

            //点击警告框,模拟点击确定
            driver.switchTo().alert().accept();
            //模拟点击取消
            driver.switchTo().alert().dismiss();    

     上面两种警告框不能通过常规的页面元素定位去操作

    ③通过div显示在页面最上层

    div实现的确认框,通过常规的定位元素方法去定位

    2.iframe内联框架

    当要操作iframe中元素时,一定要注意先切换(driver)到此内联框架iframe中,

    切换方式:

    传入要操作的iframe的id或者name的值,或者此iframe WebElement:driver.switchTo().frame(name或者Id),还有driver.switchTo().frame(WebElement)

    //iframe页面定位元素,这是通过id属性
    driver.switchTo().frame("id");

    3.多窗口window

    package com.web_java01;
    
    import org.openqa.selenium.By;
    import org.testng.annotations.Test;
    
    import java.util.Set;
    
    public class web_test05 extends Base {
        /*
        1.打开A页面,在A页面中输入操作
        2.点击A页面的超链接,打开B页面
        3.点击A页面的超链接,打开C页面
        4.往B和C页面中输入操作
         */
        @Test
        public void test() throws InterruptedException {
            //访问百度
            driver.get("http://www.baidu.com");
            //等待
            Thread.sleep(2000);
            //拿到A页面的句柄
            String handleA = driver.getWindowHandle();
            //打开超链接B
            driver.findElement(By.linkText("新闻")).click();
            Thread.sleep(1000);
            //打开超链接C
            driver.findElement(By.linkText("地图")).click();
            Thread.sleep(1000);
            //拿到所有页面的句柄
             Set<String> handles= driver.getWindowHandles();
            for (String handle : handles) {
                if(handle.equals(handleA)){
                    continue;
                }
                driver.switchTo().window(handle);
                String windowTitle = driver.getTitle();
                if(windowTitle.contains("新闻")){
                    driver.findElement(By.id("ww")).sendKeys("新闻页面");
                }else if (windowTitle.contains("地图")){
                    driver.findElement(By.id("sole-input")).sendKeys("地图");
                    Thread.sleep(3000);
                }
            }
            Thread.sleep(4000);
            //关闭浏览器
            driver.quit();
        }
    }
  • 相关阅读:
    vue的选项
    css(3)基础知识查漏补缺
    总结获取网页相关的一些宽高
    vue的全局api(二)
    vue的全局api
    vue的内部指令
    Java File
    Java File IO学习笔记
    systemctl介绍
    java学习笔记一(20180319)
  • 原文地址:https://www.cnblogs.com/zhaobobo001/p/14658363.html
Copyright © 2011-2022 走看看