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");

下面來看看一個測試用例,它將自動化以下場景:

註 : 有關檔案 - 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程式碼。

按照下面給出的步驟找到範例網頁上的下拉式選單。

它將啟動一個視窗,其中包含「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瀏覽器並自動執行所有測試方案。