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();
    }
}

 

posted @ 2021-04-14 16:01  小boboa  阅读(237)  评论(0编辑  收藏  举报