当前位置: 首页 > 教程 > Selenium >

Selenium WebDriver处理Alert

精华
小牛编辑
157浏览
2023-03-14

在本节中,您将学习如何在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浏览器并自动执行所有测试方案。