popups can be blocked in browser using some browser addons,
but for testing purpose, sometimes we need to allow the popups or multiple windows.
A single instance of selenium web-driver can handle multiple popups and browser windows.
Let's see how web-driver handles these above mentioned popups or browser windows.
Selenium provides 2 methods getWindowHandle() and getWindowHandles() to deal with the multiple browser windows.
getWindowHandle() - this method returns the current browser window handle id that the web-driver is currently holding.
getWindowHandles() - this method returns set of browser window handle ids that are invoked/opened by the web-driver.
and we use switchTo().window(window_handle_id) to switch to different browser windows of the web-driver.
Below is the code implementation and comments of each line explanation
import java.util.Iterator;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class WindowHandling {
public static void main(String[] args) throws InterruptedException {
WebDriver d=new FirefoxDriver();
d.manage().timeouts().implicitlyWait(10L, TimeUnit.SECONDS);
d.get("http://www.popuptest.com/popuptest2.html");
Set s=d.getWindowHandles(); //s holds the set of all browser windows
Iterator iter=s.iterator();
String maintab=(String) iter.next();//maintab holds the 1st browser window
String childtab=(String) iter.next();//childtab holds the next browser window
d.switchTo().window(childtab); //move to child browser window
System.out.println(childtab + d.getTitle());
d.close();
d.switchTo().window(maintab); //move to parent browser window
System.out.println(maintab+d.getTitle());
d.close();
//if a driver opens more than one browser windows, then we can loop to
//move each of the window and perform some actions
/*while(iter.hasNext())
{
System.out.println(iter.next());
}*/
}
}

No comments:
Post a Comment