How to handle frame in selenium webdriver using java?
What is a frame?
Frame is just like as a container where few elements can be grouped.
How to identify frame inside a webpage?
There are different ways to identify frame inside a webpage
Way 1:
- Open webpage in a browser.
- Right click on webelement in a webpage
Way 2:
- Open webpage in a browser.
- Right click on webelement in a webpage
- Open source code(Html Code) of the webpage by clicking inspect element with firebug option see below image.
How to handle an element inside the frame?
There are 4 ways to handles frames in selenium web driver.
Switch to frame by using index:
Method 1 :
Suppose if there is single frame in a webpage then we can switch to the iframe by using index.
Here is the sample code:
Syntax : driver.switchTo().frame(int index);
Example : driver.switchTo().frame(0);
Note : By default single frame index value ‘ 0’.That means when webpage has only one frame then the index will be zero.
Method 2 :
Suppose if there are 3 frames in a webpage then we can switch to the iframe by using index.
Here is the sample code:
Syntax :
List framelist=driver.findElements(By.tagName("iframe"));
driver.switchTo().frame(framelist.get(int index));
Example :
List framelist=driver.findElements(By.tagName("iframe"));
//switchTo 1st frame by using index
driver.switchTo().frame(framelist.get(0));
//switchTo 2nd frame by using index
driver.switchTo().frame(framelist.get(1));
//switchTo 3rd frame by using index
driver.switchTo().frame(framelist.get(2));
Switch to frame by using Id or Name :
We can also use Name and Id attributes of iframe through which we can switch to iframes.
Here is the sample code:
Syntax 1:
driver.switchTo().frame(“Id of the element”);
Html code :
Example : driver.switchTo().frame(“rightMenu”);
Syntax 2:
driver.switchTo().frame(“Name of the element”);
Html code :
Example :
driver.switchTo().frame(“rightMenu”);
Switch to frame by using WebElement :
We can also switch to the frame using webelement.
Here is the sample code:
Syntax :
driver.switchTo().frame(WebElement);
Html code :
Example : driver.switchTo().frame(driver.findElement(By.name(“rightMenu”)));
How to get all the frames in a webpage ?
Html code :
Open notepad and type the below Html code and save as frames.html
Click on Gmail
Example :
package seleniumProject;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class getTotalFrames {
public static void main(String[] args) {
// Open Firefox Browser
WebDriver driver = new FirefoxDriver();
// Open AppURL In Browser
driver.get("file:///C:/Users/Hanumanthu/Downloads/frames.html");
// count all the frames on a webpage
List total_frames=driver.findElements(By.tagName("iframe"));
System.out.println(total_frames.size());
//close the current browser window
driver.close();
}
}
How to verify TestNg text inside 3rd frame?
Selenium Sample Code :
package seleniumProject;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class getTotalFrames {
public static void main(String[] args) {
// Open Firefox Browser
WebDriver driver = new FirefoxDriver();
// Open AppURL In Browser
driver.get("file:///C:/Users/Hanumanthu/Downloads/frames.html");
//count all the frames on a webpage
List total_frames=driver.findElements(By.tagName("iframe"));
System.out.println(total_frames.size());
//Switch to 3rd Frame by using Index
driver.switchTo().frame(total_frames.get(2));
//Identify and get the text and store into testNg_text variable
String testNg_text=driver.findElement(By.xpath("html/body/h2[1]")).getText();
//print the text from 3rd frame
System.out.println(testNg_text);
//verify the text from 3rd frame
if(testNg_text.equals("TestNG"))
{
System.out.println("TestNG text verified successfully");
}else
{
System.out.println("TestNG text not verified successfully");
}
//How switch back to main window from inside any frame ?
driver.switchTo().defaultContent();
//Close the Firefox Browser
driver.close();
}
}
Note :
1. Switch to 3rd Frame by using Index
Syntax : driver.switchTo().frame(total_frames.get(index));
Example : driver.switchTo().frame(total_frames.get(2));
2.Switch to 3rd Frame by using Id
Syntax : driver.switchTo().frame(“Id of the element”);
Example : driver.switchTo().frame(“selenium”);
If no id then go for Name.
3.Switch to 3rd Frame by using Name
Syntax : driver.switchTo().frame(“Name of the element”);
Example : driver.switchTo().frame(“selenium”);
4.Switch to 3rd Frame by using WebElement
Syntax : driver.switchTo().frame(WebElement);
Example : driver.switchTo().frame(driver.findElement(By.name(“selenium”);
How switch back to main window from inside any frame ?
Syntax : driver.switchTo().defaultContent();
How to handle frame in selenium webdriver using java
TestSteps:
Open Firefox Browser
Open AppURL In Browser
Get the Title of WebPage
Verify Title of WebPage
Enter the username
Enter the password
Clicking On Login Button
Identify and get the Welcome selenium text
Verify Welcome selenium text
Switch to frame
Handle DropDown in Selenium
a) How to print all the dropdown values
b) How to Select the dropdown value inside a frame
c) verify selected value from dropdown
d) How to Verify dropdown values
Again switch back to main window from frame
Clicking On Logout Button
Close the Firefox Browser
Selenium Code :
package com.tests;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
importorg.openqa.selenium.support.ui.Select;
publicclassOrangeHRM_login {
publicstaticvoid main(String[] args) throwsInterruptedException {
// open the firefox browser
WebDriver driver = newFirefoxDriver();
// navigate the AppUrl
driver.get("http://127.0.0.1/orangehrm-2.5.0.2/login.php");
//Get the Title of WebPage
String title=driver.getTitle();
//print the title of the webpage
System.out.println(title);
//Verify Title of the WebPage
if (title.equals("OrangeHRM - New Level of HR Management")) {
System.out.println("title is verified successfully");
} else {
System.out.println("title is not verified successfully");
}
// Enter the username
driver.findElement(By.name("txtUserName")).sendKeys("selenium");
// Enter the password
driver.findElement(By.name("txtPassword")).sendKeys("selenium");
// Clicking On Login Button
driver.findElement(By.name("Submit")).click();
// Identify and get the Welcome selenium text and store into text variable
String text = driver.findElement(By.xpath("//*[@id='option-menu']/li[1]")).getText();
// Print the welcome selenium text
System.out.println(text);
// To verify whether the welcome page successfully opened or not
if (text.equals("Welcome selenium")) {
System.out.println("Welcome selenium is verified successfully");
} else {
System.out.println("Welcome selenium is not verified successfully");
}
// Switch to Frame by ID
driver.switchTo().frame("rightMenu");
System.out.println("****How to print all the dropdown values inside a frame****");
// Identify the dropdown
WebElement dropdown = driver.findElement(By.id("loc_code"));
// Identify dropdown values and store into droplist variable
List droplist = dropdown.findElements(By.tagName("option"));
// How to print all the dropdown values
for (inti = 0; i<droplist.size(); i++) {
System.out.println(droplist.get(i).getText());
}
System.out.println("*****How to Select the dropdown value inside a frame*****");
/*
If u want to select the dropdown value then we need to create the select object for that dropdown
*/
Select s = new Select(dropdown);
// Select the dropdown value by using index
s.selectByIndex(2);
//s.selectByVisibleText("Emp. First Name");
//s.selectByValue("1");
System.out.println("****verify selected value from dropdown inside a frame *****");
//get the selected value and store into selected_value variable
String selected_value=s.getFirstSelectedOption().getText();
//print selected value
System.out.println("selected_value :"+selected_value);
//verify selected value from dropdown
if (selected_value.equals("Emp. First Name")) {
System.out.println("selected value verified successfully");
} else {
System.out.println("selected value not verified successfully");
}
// How switch back to main window from inside any frame
driver.switchTo().defaultContent();
// Clicking On Logout Button
driver.findElement(By.xpath("//*[@id='option-menu']/li[3]/a")).click();
// Close the Firefox Browser
driver.close();
}
}
Click here: How to verify multiple checkboxes in a webpage using selenium? Click here: Steps to configure Selenium WebDriver with java to develop test scripts
Selenium Training in Hyderabad
Kosmik Technologies is on of the best selenium training institutes in Hyderabad. We are providing lab facilities with complete real-time training. Training is based on complete advance concepts. So that you can get easily "hands-on experience". We will give 100% job assistance.