Before we go any further, let’s understand why and when the switch method is used for. Frames, notifications, and windows can be switched using Selenium Switch Methods. Before performing an action inside the frame, alert, or window, our Test Script needs to switch. If we don’t switch, an exception is raised by the application. switchTo() provides access to the different Selenium switch methods. In order to transmit a future command, switchTo() returns a target location.
Switch To Frame
There are 4 ways to choose a frame and only one way to go to the parent context:
- Using a WebElement
- Using a name or ID:
driver.switchTo().frame("iframe");
- Using an index:
driver.switchTo().frame(0);
-
Leaving a frame
Switch To Alert
A pop-up box is an alert notifying the user or requesting a certain action. There are 3 different sorts of notifications and 4 different things you may do with an alert. The 3 different alert kinds are:
- Information Alert: Contains 1 button and a message.
- Confirmation Alert: This alert has a message and two buttons.
- Prompt Alert: The prompt alert message has two buttons and a text entry box.
An alarm is typically displayed with a grey disabled backdrop. The website is grey because it cannot be used to perform an action. The alarm needs to be handled in some way.
The test script that follows switches to the alert and accepts it if the pop-up image was an alert.
@Test public void demoSwitchToAlert () { driver.get("https://blog.perficient.com/"); driver.switchTo().alert().accept(); }
Switch To Window
All windows have a distinct alphanumeric id that Selenium assigns. The id is used to switch control between each window and is referred to as a window handle. There are two techniques for obtaining the window handle:
- Get the current window handle with getWindowHandle().
- Get a list of window handles with getWindowHandles().
The following statement lines get the window handle and window handles:
- String mainHandle = driver.getWindowHandle(): gets the HomePage window handle.
- Set <String> allHandles = driver.getWindowHandles(): gets both window handles.
Happy Testing! 😎