基於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() 輸入值,這個alert\confirm沒有對話框就不能用了,不然會報錯。

 

我們專注於持續集成,更多原創請關注:www.hordehome.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM