Frames, Alerts & Windows

Handling iframes, browser alerts, and multiple windows.

iFrames

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

// Switch by name/id
driver.switchTo().frame("iframe-name");

// Switch by WebElement
WebElement frame = driver.findElement(By.cssSelector("iframe.content"));
driver.switchTo().frame(frame);

// Return to main page
driver.switchTo().defaultContent();

Alerts

java
import org.openqa.selenium.Alert;

Alert alert = driver.switchTo().alert();
System.out.println(alert.getText()); // get message
alert.accept();  // click OK
alert.dismiss(); // click Cancel
alert.sendKeys("my input"); // for prompt dialogs

Multiple Windows / Tabs

java
String mainWindow = driver.getWindowHandle();

// Open new tab
driver.findElement(By.id("open-tab")).click();

// Switch to new tab
for (String handle : driver.getWindowHandles()) {
    if (!handle.equals(mainWindow)) {
        driver.switchTo().window(handle);
        break;
    }
}

// Do work in new tab...

// Close and switch back
driver.close();
driver.switchTo().window(mainWindow);