怎么处理 Selenium 警报和弹出窗口?
Alert 是什么 Selenium?
An 警报在 Selenium 是屏幕上显示的一个小消息框,用于向用户提供一些信息或通知。它会向用户通知一些具体信息或错误,请求执行某些任务的权限,还会提供警告消息。
在本教程中,我们将学习如何处理弹出窗口 Selenium 以及在 Web 应用程序中发现的不同类型的警报 测试。我们还将了解如何处理 Selenium WebDriver 并了解如何根据警报类型接受和拒绝警报。
警报类型 Selenium
1) Simple Alert
简单的警报类 Selenium 在屏幕上显示一些信息或警告。
2) Prompt Alert
本篇 Prompt Alert 询问用户一些输入,并 Selenium webdriver 可以使用 sendkeys(” input... “) 输入文本。
3) Confirmation Alert
此确认警报请求执行某种操作的权限。
如何处理警报 Selenium 网络驱动程序
Alert 接口提供了以下几种方法,这些方法广泛用于 Selenium 网络驱动程序.
1) 无效解雇() // 点击警报的“取消”按钮。
driver.switchTo().alert().dismiss();
2) 无效接受()// 点击警报的“确定”按钮。
driver.switchTo().alert().accept();
3) 字符串获取文本() // 捕获警报消息。
driver.switchTo().alert().getText();
4) 无效 sendKeys (字符串 stringToSend ) // 向警告框发送一些数据。
driver.switchTo().alert().sendKeys("Text");
您可以看到显示了许多警报方法,如下面的屏幕所示 Eclipse.
我们可以使用以下方法轻松地从主窗口切换到警报 Selenium“ 。切换到() 方法。
现在我们自动化下面给出的场景。
在这个场景中,我们将使用 Guru99 演示站点来说明 Selenium 警报处理。
步骤1) 启动网络浏览器并打开网站 https://demo.guru99.com/test/delete_customer.php
步骤2) 输入任何客户 ID。
步骤3) 输入客户ID后,点击“提交”按钮。
步骤4) 拒绝/接受警报。
处理警报 Selenium 网络驱动程序
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.NoAlertPresentException; import org.openqa.selenium.Alert; public class AlertDemo { public static void main(String[] args) throws NoAlertPresentException,InterruptedException { System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); // Alert Message handling driver.get("https://demo.guru99.com/test/delete_customer.php"); driver.findElement(By.name("cusid")).sendKeys("53920"); driver.findElement(By.name("submit")).submit(); // Switching to Alert Alert alert = driver.switchTo().alert(); // Capturing alert message. String alertMessage= driver.switchTo().alert().getText(); // Displaying alert message System.out.println(alertMessage); Thread.sleep(5000); // Accepting alert alert.accept(); } }
输出:
执行上述代码后,网站将启动。尝试通过处理屏幕上显示的确认警报来删除客户 ID,从而从应用程序中删除客户 ID。
如何使用处理弹出窗口 Selenium 网络驱动程序
在自动化中,当我们在任何 Web 应用程序中有多个窗口时,活动可能需要在多个窗口之间切换控制权以完成操作。 操作完成后,它必须返回到主窗口,即父窗口 Selenium。我们将在文章中通过示例进一步了解这一点。
In Selenium web 驱动程序有一些方法可以帮助我们处理多个窗口。
驱动程序.获取窗口句柄();
要处理 Web 驱动程序打开的所有窗口,我们可以使用“Driver.getWindowHandles()”,然后我们可以在 Web 应用程序中将窗口从一个窗口切换到另一个窗口。它的返回类型是 Iterator 。
驱动程序.获取窗口句柄();
当网站打开时,我们需要通过以下方式处理主窗口 驱动程序.获取窗口句柄()。这将处理此驱动程序实例中唯一标识它的当前窗口。其返回类型为 String。
对于窗口处理 Selenium,我们将遵循以下步骤:
现在,我们将自动化下面给出的场景,看看如何使用 Selenium 网络驱动程序。
在这种情况下,我们将使用“Guru99”演示站点来说明窗口处理。
步骤1) 启动网站。
启动浏览器并打开网站 https://demo.guru99.com/popup.php
步骤2) 点击链接“点击此处”。
当用户点击“单击此处”链接时,将打开新的子窗口。
步骤3) 新的子窗口打开。
打开一个新窗口,要求用户输入电子邮件 ID 并提交页面。
步骤4) 输入您的电子邮件 ID 并提交。
步骤5) 提交页面时显示访问凭证。
当您执行代码时,您将看到子窗口在新选项卡中打开。
- 关闭显示凭证的子窗口。
- 切换到父窗口。
如何处理多个 Windows in Selenium
import java.util.Iterator; import java.util.Set; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class WindowHandle_Demo { public static void main(String[] args) throws InterruptedException { WebDriver driver=new FirefoxDriver(); //Launching the site. driver.get("https://demo.guru99.com/popup.php"); driver.manage().window().maximize(); driver.findElement(By.xpath("//*[contains(@href,'popup.php')]")).click(); String MainWindow=driver.getWindowHandle(); // To handle all new opened window. Set<String> s1=driver.getWindowHandles(); Iterator<String> i1=s1.iterator(); while(i1.hasNext()) { String ChildWindow=i1.next(); if(!MainWindow.equalsIgnoreCase(ChildWindow)) { // Switching to Child window driver.switchTo().window(ChildWindow); driver.findElement(By.name("emailid")) .sendKeys("gaurav.3n@gmail.com"); driver.findElement(By.name("btnLogin")).click(); // Closing the Child Window. driver.close(); } } // Switching to Parent window i.e Main Window. driver.switchTo().window(MainWindow); } }
输出:
执行上述代码后,它会启动网站,单击“单击此处”链接后,它会在新选项卡中打开一个子窗口。您可以关闭子窗口,并在操作完成后切换到父窗口。因此,可以在应用程序中处理多个窗口。
结语
- 我们定义了警报的类型并通过屏幕截图显示它们。
- 演示如何使用 Selenium WebDriver 使用特定场景。
- 处理多个窗口 Selenium WebDriver 使用特定场景。