An iframe is also known as the 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.
The frame enables a developer to split the screen horizontally or vertically by using the frameset tag.
Note: Frame and frameset tags are deprecated as they are no longer supported by HTML 5.
The iframes are mainly used to insert content from external sources. For example, an advertisement displayed on a web page. They can float within the webpage, which means one can position an iframe at a specific position on a web page.
Here is a code snippet that portrays an HTML page containing two iframes:
For a browser to automatically start interacting with the web page, it is essential for the browser 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, it means the page includes frames. Consider the image below as an example:
For a browser to work with several elements in iframes, it is crucial for the browser to 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:
The image below gives a glimpse of all the commands:
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:
Example to find the number of frames:
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:
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.
To switch between an iframe using the name attribute, one can use the switch command as follows:
To switch between an iframe using the Id attribute, one can use the switch command as follows:
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.
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. Use switchTo().defaultContent to shift to the primary/first parent frame. Refer to the sample code below:
Therefore mentioned 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.