Selenium WebDriver處理Alert
在本節中,您將學習如何在Selenium WebDriver中處理警報(Alert)。
Selenium WebDriver根據警報類型提供三種接受和拒絕警報的方法。
1. void dismiss()
此方法用於單擊警報的「取消」按鈕。
語法:
driver.switchTo().alert().dismiss();
2. void accept()
此方法用於單擊警報的「確定」按鈕。
語法:
driver.switchTo().alert().accept();
3. void accept()
此方法用於捕獲警報消息。
語法:
driver.switchTo().alert().getText();
4. void sendKeys(String stringToSend)
此方法用於將一些數據發送到警報框。
語法:
driver.switchTo().alert().sendKeys("Text");
下面來看看一個測試用例,它將自動化以下場景:
- 調用Firefox瀏覽器
- 打開網址 - https://localhost/testing.html
- 單擊「生成警報框」按鈕
- 單擊「生成確認框」按鈕
- 關閉瀏覽器
注 : 有關文件 - testing.html 的代碼在前面幾篇文章中已經列出,這裏不再贅述。
我們將逐步創建測試用例,以便您完全瞭解如何在WebDriver中處理警報。
第1步 - 啓動Eclipse IDE並打開在本教程前幾節中創建的現有測試套件「Demo_Test」。
第2步 - 右鍵單擊「src」 文件夾,然後從 New -> Class 創建一個新的類文件。
將類的名稱命名爲「alert_test」 ,然後單擊「完成」按鈕。
第3步 開如編寫代碼。
要調用Firefox瀏覽器,需要下載Gecko驅動程序併爲Gecko驅動程序設置系統屬性。在本教程的前面幾篇文章已經講解過這個問題。可以參考「在Firefox瀏覽器上運行測試」來了解如何下載和設置Firefox驅動程序的系統屬性。
以下是爲Gecko驅動程序設置系統屬性的示例代碼:
// System Property for Gecko Driver
System.setProperty("webdriver.gecko.driver","D:\\GeckoDriver\\geckodriver.exe" );
之後使用DesiredCapabilities
類初始化Gecko Driver。
以下是使用DesiredCapabilities
類初始化gecko驅動程序的示例代碼。
// Initialize Gecko Driver using Desired Capabilities Class
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette",true);
WebDriver driver= new FirefoxDriver(capabilities);
結合上述兩個代碼塊,完善啓動Firefox瀏覽器的代碼片段。
// System Property for Gecko Driver
System.setProperty("webdriver.gecko.driver","D:\\GeckoDriver\\geckodriver.exe" );
// Initialize Gecko Driver using Desired Capabilities Class
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette",true);
WebDriver driver= new FirefoxDriver(capabilities);
之後需要編寫代碼來自動化第二個測試場景(導航到所需的URL),
以下是導航到所需URL的示例代碼:
// Launch Website
driver.navigate().to("http://localhost/testing.html");
到目前爲止完整的代碼如下所示:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
public class alert_test {
public static void main(String[] args) {
// System Property for Gecko Driver
System.setProperty("webdriver.gecko.driver","D:\\GeckoDriver\\geckodriver.exe" );
// Initialize Gecko Driver using Desired Capabilities Class
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette",true);
WebDriver driver= new FirefoxDriver(capabilities);
// Launch Website
driver.navigate().to("http://localhost/testing.html");
}
}
第4步 - 現在,找到「Generate Alert Box」 和「Generate Confirm Box」 以執行警報處理操作。定位元素涉及檢看其HTML代碼。
按照下面給出的步驟找到示例網頁上的下拉菜單。
- 打開網址 - http://localhost/testing.html
- 右鍵單擊「Generate Alert Box」按鈕,然後選擇「檢查元素」。
它將啓動一個窗口,其中包含「Generate Alert Box」 按鈕所涉及的所有特定代碼。
記下其鏈接文本,即 - 「Generate Alert box」 -
同樣,查看 「Generate Confirm box」 按鈕。
記下其鏈接文本,即 - 「Generate Confirm box」 -
第5步 - 要自動化第三和第四個測試場景,需要編寫單擊並接受Generate Alert box 的代碼,然後單擊並接受Generate Confirm box 框。
下面給出了自動化第三和第四個測試場景的代碼片段。
//Handling alert boxes
//Click on generate alert button
driver.findElement(By.linkText("Generate Alert Box")).click();
//Using Alert class to first switch to or focus to the alert box
Alert alert = driver.switchTo().alert();
//Using accept() method to accep the alert box
alert.accept();
//Handling confirm box
//Click on Generate Confirm Box
driver.findElement(By.linkText("Generate Confirm Box")).click();
Alert confirmBox = driver.switchTo().alert();
//Using dismiss() command to dismiss the confirm box
//Similarly accept can be used to accept the confirm box
confirmBox.dismiss();
因此,最終測試腳本將如下所示:
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.Alert;
public class alert_test {
public static void main(String[] args) {
// System Property for Gecko Driver
System.setProperty("webdriver.gecko.driver","D:\\GeckoDriver\\geckodriver.exe" );
// Initialize Gecko Driver using Desired Capabilities Class
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette",true);
WebDriver driver= new FirefoxDriver(capabilities);
// Launch Website
driver.navigate().to("http://localhost/testing.html");
//Handling alert boxes
//Click on generate alert button
driver.findElement(By.linkText("Generate Alert Box")).click();
//Using Alert class to first switch to or focus to the alert box
Alert alert = (Alert) driver.switchTo().alert();
//Using accept() method to accept the alert box
alert.accept();
//Handling confirm box
//Click on Generate Confirm Box
driver.findElement(By.linkText("Generate Confirm Box")).click();
Alert confirmBox = (Alert) driver.switchTo().alert();
//Using dismiss() command to dismiss the confirm box
//Similarly accept can be used to accept the confirm box
((Alert) confirmBox).dismiss();
}
}
執行後,上述測試腳本將啓動Firefox瀏覽器並自動執行所有測試方案。