Here the Alert Interface in Selenium is a small message box that appears on screen to give the user an information or may be notification. It always notifies the user with some specific information or may be error that asks for permission to perform some tasks an also it provides a warning message.
There are few alert in selenium types. They are:
- Simple Alert- The simple alert class in selenium will display some information or may be some warning on the screen.
- Prompt Alert- This prompt alert will ask some input from the selenium webDriver can enter the text by using the sendkeys(“……input”).
- confirmation alert- This confirmation alert asks permission to do the operation.
How we may handle the Alert in selenium Webdriver?
Alert interface will provide the below few methods which will be widely used in Selenium webDriver.
- Void dismiss()//To select and click on ‘cancel’ button of the alert.
driver.switchTo().alert().dismiss();
- Void accept()//To click “OK” button of the alert.
driver.switchTo().alert().accept();
- String getText()//To capture the alert message
driver.switchTo().alert().getText();
- Void sendkeys(String stringToSend) //used to send some data to alert box.
driver.switchTo().alert().sendKeys(“Text”);
We can easily switch to alert from the main window by using Selenium.switchTo()method.
Consider an example, to show the Selenium Alert handling
Step 1- Launch the web browser and also open the site http://demo.iitworkforce.com/test/delete_customer.php
step 2- Enter any customer id
Step 3- once it enters the customer id, click on the “submit” button.
Step 4- Reject or may be accept the alert.
Example for handling alert
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 { //It will throw exception
System.setProperty(“webdriver.chrome.driver”,”G:\\chromedriver.exe”);
WebDriver driver = new ChromeDriver();
// By Alert Message handling
driver.get(“http://demo.iitworkforce.com/test/delete_customer.php”);
driver.findElement(By.name(“cusid”)).sendKeys(“53920”);
driver.findElement(By.name(“submit”)).submit();
//By 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();
}
}
Output
When we run this code it will launch a site and try to delete customer ID by handling confirmation alert which will display the screen and also thereby deleting the customer id from the application.
How to handle the unexpected and sudden alerts by using selenium webdriver?
As we can surf web application, unexpected alerts these will happen due to some error or some other reasons. This kind of alert will not be display every time we open the site but the surface can be at random intervals. This can cause an automation test case for such pages and not handled this kind of alerts where our scripts will fall immediately if such unexpected alert popup is displayed.
When we direct code without any try catch block to accept or dismiss the alert and if the alert does not appear then our test case will fail to throw any exception in selenium like timeout Exception. Try catch block can handle both the situations.
There are examples about how we handle the unexpected alert
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;
public class alerts {
public static void main(String[] args) {
System.setProperty(“webdriver.chrome.driver”,”./src/resources/chromedriver”);
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get(“https://demoqa.com/alerts”);
try {
driver.findElement(By.id(“timerAlertButton”)).click();
WebDriverWait wait = new WebDriverWait(driver,10);
wait.until(ExpectedConditions.alertIsPresent());
Alert simpleAlert = driver.switchTo().alert();
simpleAlert.accept();
System.out.println(“Unexpected alert accepted”);
} catch (Exception e) {
System.out.println(“unexpected alert not present”);
}
driver.quit();
}}
We have to launch the browser and open the site which has alerts.
Then locate the WebElement “timerAlertButton”and click on it.
Explicit wait as the driver will wait for 10 seconds to see if an alert occurs and it will check for alert using the try-catch block.Here Explicit wait used as WebDriverWait wait=new WebDriver(driver ,10); and wait.until(ExpectedCondition.alertlsPresent());
If the alert will be presentit will accept using driver.switchTo ().alert ().accept (); method will go to the catch block and the message “unexpected alert not present” will be displayed.
Questions
- What is Alert Interface?
- Demonstrate an example of alert interface using selenium?