The Alert Interface and Its Methods

To interact with a JavaScript alert, first switch the driver's focus to the alert, then use the Alert methods.

 
// Switch to the alert
Alert alert = driver.switchTo().alert();

// Get the text of the alert
String alertText = alert.getText();

// Accept the alert (click OK)
alert.accept();

// Dismiss the alert (click Cancel)
alert.dismiss();

// Send keys to the alert (enter text)
alert.sendKeys("Text to enter");

// Wait for the alert to be present
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.alertIsPresent());
 

The Alert interface provides the following methods:

  • getText() – Retrieves the text displayed in the alert dialog.
  • accept() – Clicks the OK/Accept button.
  • dismiss() – Clicks the Cancel/Dismiss button.
  • sendKeys() – Enters text into the alert (only for prompt alerts).
  • WebDriverWait + alertIsPresent() – Waits until an alert appears before interacting with it.

Handling JavaScript Alerts and Confirmations

To handle JavaScript alert or confirmation popups, use the Alert interface provided by Selenium WebDriver.

Advertisement

It works for:

  • Alert popups
  • Confirmation popups
  • Prompt popups
 
public class AlertHandlingExample {

    public static void main(String[] args) {

        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");

        WebDriver driver = new ChromeDriver();

        driver.get("https://www.example.com");

        // Find the button that triggers the alert
        driver.findElement(By.id("alert-button")).click();

        // Switch to the alert popup
        Alert alert = driver.switchTo().alert();

        // Get the text of the alert
        String alertText = alert.getText();
        System.out.println("Alert Text: " + alertText);

        // Accept the alert (click OK)
        alert.accept();

        driver.quit();
    }
}
 

Handling Frames

We can switch to frames (iframes) in Selenium in three ways.

Method 1 – Switch by Index

The iframe index starts from 0.

 
driver.switchTo().frame(0);

driver.switchTo().frame(1);

driver.switchTo().frame(99);
 

Method 2 – Switch by Name or ID

 
driver.switchTo().frame("iframe1");        // By Name

driver.switchTo().frame("id-of-element");  // By ID
 

Method 3 – Switch by WebElement

 
driver.switchTo().frame(webElement);
 

Switching Back to the Main Frame

Switching back means coming out of the iframe.

There are two options.

Switch to the Immediate Parent Frame

 
driver.switchTo().parentFrame();
 

Switch Back to the Main Page

 
driver.switchTo().defaultContent();
 

Handling Elements Inside a Frame

To interact with elements inside an HTML frame, you must first switch the driver's focus to that frame.

 
public class FrameHandlingExample {

    public static void main(String[] args) {

        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");

        WebDriver driver = new ChromeDriver();

        driver.get("https://www.example.com");

        // Switch to the frame by index
        driver.switchTo().frame(0);

        // Interact with elements inside the frame
        WebElement element = driver.findElement(By.id("element-id"));

        element.click();

        // Switch back to the main page
        driver.switchTo().defaultContent();

        driver.quit();
    }
}
 

Handling Browser Popups Using Window Handles

For browser popups (new windows or tabs), use getWindowHandle(), getWindowHandles(), and switchTo().window().

 
public class BrowserPopupHandlingExample {

    public static void main(String[] args) {

        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");

        WebDriver driver = new ChromeDriver();

        // Click the button that opens the popup
        driver.findElement(By.id("popup-button")).click();

        // Parent window handle
        String parentWindowHandle = driver.getWindowHandle();

        // All window handles
        Set<String> allWindowHandles = driver.getWindowHandles();

        // Switch to popup window
        for (String windowHandle : allWindowHandles) {

            if (!windowHandle.equals(parentWindowHandle)) {

                driver.switchTo().window(windowHandle);

            }
        }

        // Perform operations on popup

        // Switch back to parent window
        driver.switchTo().window(parentWindowHandle);
    }
}
 

Steps to Handle Browser Popups

  1. Capture the parent window handle.
  2. Get all window handles.
  3. Loop through all handles.
  4. Switch to the popup window.
  5. Perform required operations.
  6. Switch back to the parent window.

Authentication Popups (Browser-Level)

Page authentication popups are browser-level dialogs, not HTML elements.

One approach is using authenticateUsing() with a UserAndPassword object.

 
driver.get("https://www.example.com");

UserAndPassword userAndPassword =
        new UserAndPassword("username", "password");

alert.authenticateUsing(userAndPassword);
 

The authenticateUsing() method supplies the username and password to the authentication popup.

Windows-based popups (OS dialogs) cannot be handled directly by Selenium.

They are generally handled using:

  • AutoIt
  • Robot Class

Handling Untrusted Certificates (HTTPS)

When a website presents an untrusted SSL certificate, the browser displays a security warning.

Configure browser options before launching the browser.

 
public class HandleUntrustedCertificates {

    public static void main(String[] args) {

        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");

        // Configure ChromeOptions
        ChromeOptions options = new ChromeOptions();

        options.setAcceptInsecureCerts(true);

        // Launch browser
        WebDriver driver = new ChromeDriver(options);
    }
}
 

setAcceptInsecureCerts(true) allows Selenium to bypass SSL certificate warnings.


FAQs

1. How do you handle a JavaScript alert in Selenium?

Switch to the alert using:

 
driver.switchTo().alert();
 

Then use:

  • getText()
  • accept()
  • dismiss()
  • sendKeys()

Use:

 
ExpectedConditions.alertIsPresent()
 

to wait until the alert appears.


2. How many ways can you switch to a frame?

There are three ways.

  • By Index
  • By Name or ID
  • By WebElement

Example:

 
driver.switchTo().frame(...);
 

3. How do you switch back to the main frame?

Immediate parent frame:

 
driver.switchTo().parentFrame();
 

Main page:

 
driver.switchTo().defaultContent();
 

4. How do you handle elements inside an iframe?

  1. Switch to the frame.
  2. Perform operations on the elements.
  3. Switch back using:
 
driver.switchTo().defaultContent();
 

5. How do you handle browser popups (new windows)?

  • Get the parent window using:
 
getWindowHandle()
 
  • Get all windows using:
 
getWindowHandles()
 
  • Switch using:
 
driver.switchTo().window(windowHandle);
 

6. How do you handle authentication popups?

Use:

 
alert.authenticateUsing(
    new UserAndPassword("username", "password")
);
 

For Windows-based popups, use:

  • AutoIt
  • Robot Class

7. How do you handle untrusted certificates?

Configure browser options before launching the browser.

 
options.setAcceptInsecureCerts(true);
 

This allows Selenium to bypass SSL certificate warnings.