How to handle iFrame in Selenium

Test iFrames in Selenium to handle frames in real user conditions on real device cloud

Guide Banner Image
Home Guide How to handle iFrame in Selenium

How to handle iFrame in Selenium

Understanding how to handle iframes in Selenium is essential for testing modern web applications, as many websites embed content using frames and iframes.

Overview

What are iFrames?

iFrames (inline frames) are HTML elements that embed another HTML document within the current page.

Why handle iFrames in Selenium?

  1. Some critical UI components (forms, ads, widgets) are loaded inside iFrames
  2. Selenium cannot directly access elements within an iFrame without switching context
  3. Avoids common test failures like NoSuchElementException

How to handle iFrames in Selenium (syntax)

driver.switchTo().frame("frameNameOrID");

This article explains what iframes are and explores different methods to interact with them using Selenium WebDriver. It also covers how to use the SwitchTo() method to switch between frames, supported by clear code examples.

What are iframes in Selenium?

An iframe is also known as an inline frame. It is a tag used in HTML5 to embed an HTML document within a parent HTML document. An iframe tag is defined using <iframe></iframe> tags.

When testing with Selenium, you can’t directly interact with elements inside an iframe unless you first switch the WebDriver’s focus to that iframe. By default, Selenium only works with elements in the main document.

Example: If a button is inside a chatbot iframe, Selenium won’t detect it until the focus is switched to that iframe.

Properly handling iframes is essential for reliable testing, especially on modern websites with embedded content.

Difference between frame and iframe in Selenium

Frame allows splitting the browser window into sections using the <frameset> tag, typically for layout purposes.

iFrame is Used to embed external content (like ads or videos) within a page. It can be positioned freely and floats within the main page layout.

Below is a table summarizing the key comparison between frame and iframe in Selenium:

AspectFrameiFrame (Inline Frame)
DefinitionDivides a webpage into multiple sections, each loading its own document.Embeds another HTML document within the current page.
Usage in SeleniumRequires switching context to interact with elements inside the frame.Also requires switching context before accessing elements within the iframe.
HTML RelevanceConsidered outdated in modern HTML standards.Widely used today for embedding external or interactive content.
Typical Use CasesLegacy websites with split screen layouts.Embedded videos, maps, widgets (like chatbots or login forms).
Tag Used<frame><iframe>
SupportLimited in HTML5 and mostly deprecated.Fully supported in HTML5 and across modern browsers.

Note: Frame and frameset tags are deprecated as they are no longer supported by HTML 5.

Here is code snippet portrays an HTML page containing two iframes –

how to identify frame in selenium

Code Snippet in Raw Format is below

<html>
<body>
 <div class="box">
         <iframe name="iframe1" id="IF1" height="50%" width="50%" src="https://www.browserstack.com"> </iframe>
  </div>
   <div class="box">
        <iframe name="iframe2" id="IF2" height="50%" width="50%"  align="left" src="https://www.browserstack.com/"></iframe>
   </div>
    </body>
</html>

How to identify a Frame on a Page?

For a browser to automatically start interacting with the web page, the browser needs to identify the elements under the frame for Selenium testing. It is possible to identify the iframes on a web page in two ways:

  • Right-click on the specific element and check all the options. If you find an option like This Frame, view Frame source or Reload Frame, the page includes frames. Consider the image below as an example.

how to identify frame in selenium

  • Similar to the first step, right-click on the page and click on View Page Source.
  • On the page source, search for iframe-tags. If you find any iframe tags, it means the page includes iframes.

Using the SwitchTo().frame function

For a browser to work with several elements in iframes, the browser must identify all the iframes. For this purpose, we need to use the SwitchTo().frame method. This method enables the browser to switch between multiple frames. It can be implemented in the following ways:

  1. switchTo.frame(int  frame number): Defining the frame index number, the Driver will switch to that specific frame
  2. switchTo.frame(string  frameNameOrId): Defining the frame element or Id, the Driver will switch to that specific frame
  3. switchTo.frame(WebElement  frameElement): Defining the frame web element, the Driver will switch to that specific frame

The image below gives a glimpse of all the commands –

Using the SwitchTo().frame function

Before understanding the implementation of the methods above, let’s understand how to identify the total number of frames in a web page.

There are two ways to do this:

  1. Executing JavaScript
  2. Finding the total number of elements that have the tag  “iframe”

Example to find the number of frames:

WebDriver driver = new ChromeDriver();
driver.get("https:// url containing i-frames/"); 
//By finding all the web elements using iframe tag
List<WebElement> iframeElements = driver.findElements(By.tagName("iframeResult"));
System.out.println("Total number of iframes are " + iframeElements.size());

//By executing a java script
JavascriptExecutor exe = (JavascriptExecutor) driver;
Integer noOfFrames = Integer.parseInt(exe.executeScript("return window.length").toString());
System.out.println("No. of iframes on the page are " + numberOfFrames);

Try Handling Frames in Selenium for Free

Switching Frames in Selenium using Index

An Index number represents the position of a specific iframe on an HTML page.

Suppose if there are 50 frames, we can switch to a specific iframe using its particular index number. One can directly switch to the first iframe using the command driver.switchTo().frame(0).

Refer to the sample code:

public static void main(String[] args) throws InterruptedException {
WebDriver driver = new ChromeDriver(); 
driver.get("/URL having iframes/");   
//Switch by Index 
driver.switchTo().frame(0); 
driver.quit(); }

Switching Frames using Name or ID

A name and Id attribute is always associated with the iframe tag. One can view this by inspecting the page source of a particular web page containing iframes. The image below represents a page source of a sample web page containing iframes.

Switching Frames using Name or ID

To switch between an iframe  using the name attribute, one can use the switch command as follows:

WebDriver driver = new ChromeDriver();
driver.get("URL”/"); // URL OF WEBPAGE HAVING FRAMES
//Switch by frame name
driver.switchTo().frame("iframeResult"); //BY frame name
driver.quit();

BrowserStack Automate Banner 7

To switch between an iframe using the Id attribute, one can use the switch command as follows:

WebDriver driver = new ChromeDriver();
driver.get("URL”/"); // URL of webpage having frames 
//Switch by frame name
driver.switchTo().frame("iframeResult");// Switch By ID 
driver.quit();

Switching Frames using WebElement

Another way to switch between frames in selenium is to pass the WebElement to the switchTo() command. Here the primary step is to find the iframe element and then pass it to the switch method.

WebDriver driver = new ChromeDriver();
driver.get("URL”); URL OF WEBPAGE HAVING FRAMES
//First finding the element using any of locator stratedgy
WebElement iframeElement = driver.findElement(By.id("iframeResult"));
//now using the switch command
driver.switchTo().frame(iframeElement);
driver.quit();

Talk to an Expert

Switching back to Main Page

The main page is where all the iframes are embedded. After operating on a particular iframe,  use switchTo().parentFrame to move back to the page pageUse switchTo().defaultContent to shift to the primary/first parent frame. Refer to the sample code below:

WebDriver driver = new ChromeDriver();
driver.get("URL");// URL OF WEBPAGE HAVING FRAMES
//First finding the element using any of locator strategy
WebElement iframeElement = driver.findElement(By.id("iFrameResult"));
//now using the switch command to switch to main frame.
driver.switchTo().frame(0);
//Perform all the required tasks in the frame 0
//Switching back to the main window
driver.switchTo().defaultContent();
driver.quit();

The aforementioned methods will help QAs run automated test cases in Selenium faster and with less effort. Simplify and speed up tests further by running them on real devices and browsers.

Is your Website Responsive across all devices?

Check what your customers see, with our FREE Responsive Checker Tool.

Testing on Real Device Cloud with BrowserStack Automate

When working with iframes in Selenium, it’s important to test across real user conditions to ensure reliable behavior. BrowserStack Automate enables you to run Selenium tests on a wide range of real iOS and Android devices as well as desktop browsers on their real device cloud.

By using BrowserStack Automate, you can:

  • Validate iframe handling across different devices and browsers.
  • Ensure iframe-based elements (like embedded widgets or payment gateways) load and function correctly.
  • Debug issues faster with access to logs, screenshots, and video recordings of test sessions.

Real device testing ensures your iframe interactions behave consistently across platforms, helping you build more stable, user-ready automation scripts.

Conclusion

Correctly handling iframes is essential for building reliable Selenium test scripts, especially on modern websites that embed dynamic or external content.

Understanding how to switch between frames using different methods, such as index, name/ID, or WebElement, can ensure accurate element interaction.

With real device testing through platforms like BrowserStack Automate, you can validate iframe behavior across browsers and devices, ensuring a seamless user experience.

Useful Resources for Selenium

Methods, Classes, and Commands

Configuration

XPath

Locators and Selectors

Waits in Selenium

Frameworks in Selenium

Miscellaneous

Best Practices, Tips and Tricks

Design Patterns in Selenium: Page Object Model and Page Factory

Action Class

TestNG and Selenium

JUnit and Selenium

Use Cases

Types of Testing with Selenium

Tags
Automation Testing Selenium Selenium Webdriver