zoukankan      html  css  js  c++  java
  • 基于Selenium2+Java的UI自动化(6)-操作Alert、confirm、prompt弹出框

    alert、confirm、prompt这样的js对话框在selenium1 时代处理起来比价麻烦,常常要用autoit来帮助处理。
    而现在webdriver对这些弹出框做了专门的处理,使用selenium2处理对话框就变得十分方便简洁。

    alert、confirm、prompt 不是 JavaScript 核心的函数。

    alert 是 BOM 中的成员函数,具体说是 window.alert。

    所以说,alert对话框显示在最前,并且禁止了浏览器页面其他的操作。废话不多说,看看怎么用webdriver操作这三种弹出框。

    一、操作 Alert 弹框


    alert在网页的HTML代码:

    <input id="alert" type='button' value='alert' 
                     onclick='alert("this is  a  [alert] window!");'/>

    当我们点击这个按钮的时候,就会弹出alert弹框:


    package com.automation.alert;
    
    import org.openqa.selenium.Alert;
    import org.openqa.selenium.By;
    import org.openqa.selenium.NoAlertPresentException;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;
    
    /**
     * 类说明:操作alert弹框
     * <br/>
     * @version 1.0
     * 2016年11月19日 下午9:47:12
     */
    public class AlertDemo {
    	private static WebDriver driver = null ;
    	private static String chromeDriverDir = "D:\workspace\A_Test\resource\chromedriver.exe";
    	
    	public static void main(String[] args) {
    		//1.打开浏览器;
    		System.setProperty("webdriver.chrome.driver", chromeDriverDir);
    		driver = new ChromeDriver();
    		driver.manage().window().maximize();
    		
    		//打开文件网址;
    		driver.get("file:///E:/desktop/upload.html");
    		
    		//定位alert按钮对象;
    		WebElement alertButton = driver.findElement(By.id("alert"));
    		
    		//点击alert按钮,弹出alert弹出框
    		alertButton.click();
    		
    		try {
    			//获取Alert弹框对象;
    			Alert alertWindow = driver.switchTo().alert();
    			
    			//获取alert弹框的文本,并打印到控制台;
    			String alertText = alertWindow.getText();
    			System.out.println(alertText);
    			
    			//点击alert弹出框中的确定按钮;
    			alertWindow.accept();
    		} catch (NoAlertPresentException e) {
    			System.out.println("尝试操作的alert弹出框未找到!");
    			e.printStackTrace();
    		}
    		
    	}
    }

    二、操作confirm弹框


    confirm在网页的HTML代码:

    <input id="confirm" type='button' value='confirm' 
                                 onclick='confirm("this is  a  [confirm] window!");'/>

    点击confirm按钮的是,弹出confirm弹框,这个弹框有两个按钮,一个确定按钮,一个取消按钮;


    package com.automation.alert;
    
    import org.openqa.selenium.Alert;
    import org.openqa.selenium.By;
    import org.openqa.selenium.NoAlertPresentException;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;
    
    /**
     * 类说明:操作confirm弹框
     * <br/>
     * @version 1.0
     * 2016年11月19日 下午9:46:47
     */
    public class ConfirmDemo {
    	private static WebDriver driver = null ;
    	private static String chromeDriverDir = "D:\workspace\A_Test\resource\chromedriver.exe";
    	
    	public static void main(String[] args) {
    		//1.打开浏览器;
    		System.setProperty("webdriver.chrome.driver", chromeDriverDir);
    		driver = new ChromeDriver();
    		driver.manage().window().maximize();
    		
    		//打开文件网址;
    		driver.get("file:///E:/desktop/upload.html");
    		
    		//定位confirm按钮对象;
    		WebElement confirmButton = driver.findElement(By.id("confirm"));
    		
    		//点击confirm按钮,弹出confirm弹出框
    		confirmButton.click();
    		
    		//获取Alert弹框对象;
    		Alert confirmWindow = null;
    		
    		try {
    			confirmWindow = driver.switchTo().alert();
    			
    			//获取confirm弹框的文本,并打印到控制台;
    			String confirmText = confirmWindow.getText();
    			System.out.println(confirmText);
    			
    			//点击confirm弹出框中的确定按钮;
    			confirmWindow.accept();
    			
    			//重新操作,点击confirm弹框的取消按钮;
    			confirmButton.click();
    			confirmWindow = driver.switchTo().alert();
    			confirmWindow.dismiss();
    			
    		} catch (NoAlertPresentException e) {
    			System.out.println("尝试操作的confirm弹出框未找到!");
    			e.printStackTrace();
    		}
    	}
    }

    三、操作prompt弹框


    prompt在网页的HTML代码:

    <input id="prompt" type='button' value='prompt' 
                      onclick='prompt("this is  a  [prompt] window!","1111");'/>

    点击prompt按钮的是,弹出prompt弹框,这个弹框有两个按钮、一个输入框;


    package com.automation.alert;
    
    import org.openqa.selenium.Alert;
    import org.openqa.selenium.By;
    import org.openqa.selenium.NoAlertPresentException;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;
    
    /**
     * 类说明:操作prompt弹框
     * <br/>
     * @version 1.0
     * 2016年11月19日 下午10:02:42
     */
    public class PromptDemo {
    	private static WebDriver driver = null ;
    	private static String chromeDriverDir = "D:\workspace\A_Test\resource\chromedriver.exe";
    	
    	public static void main(String[] args) {
    		//1.打开浏览器;
    		System.setProperty("webdriver.chrome.driver", chromeDriverDir);
    		driver = new ChromeDriver();
    		driver.manage().window().maximize();
    		
    		//打开文件网址;
    		driver.get("file:///E:/desktop/upload.html");
    		
    		//定位prompt按钮对象;
    		WebElement promptButton = driver.findElement(By.id("prompt"));
    		
    		//点击prompt按钮,弹出prompt弹出框
    		promptButton.click();
    		
    		//获取Alert弹框对象;
    		Alert promptWindow = null;
    		
    		try {
    			promptWindow = driver.switchTo().alert();
    			
    			//获取prompt弹框的文本,并打印到控制台;
    			String confirmText = promptWindow.getText();
    			System.out.println(confirmText);
    			
    			//向prompt弹框中的输入框对象,输入文本;
    			promptWindow.sendKeys("selenium + webdriver!");
    			
    			//点击prompt弹出框中的确定按钮;
    			promptWindow.accept();
    			
    			//重新操作,点击prompt弹框的取消按钮;
    			promptButton.click();
    			promptWindow = driver.switchTo().alert();
    			promptWindow.dismiss();
    			
    		} catch (NoAlertPresentException e) {
    			System.out.println("尝试操作的prompt弹出框未找到!");
    			e.printStackTrace();
    		}
    	}
    }

    从以上代码可以看出driver.switchTo().alert();这句可以得到 alert confirm prompt 对话框的对象,然后运用其方法对它进行操作。对话框操作的主要方法有:

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

    我们专注于持续集成,更多原创请关注:www.hordehome.com

  • 相关阅读:
    遇见SQL(2)
    遇见SQL(1)
    JAVA自学笔记(10)—Stream流、方法引用
    JAVA自学笔记(9)——网络通信、函数式接口
    JAVA自学笔记(7)—文件
    JAVA自学笔记(6)—异常、线程、函数式编程
    Python--模块Module
    Python--软件目录结构
    Python--迭代器
    Python--生成器
  • 原文地址:https://www.cnblogs.com/hordehome/p/6406836.html
Copyright © 2011-2022 走看看