Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Selenium multiple tabs at once

Tags:

I'm working with Selenium, and am wondering if it's possible to use multiple TABS at once? I do not want to use multiple browser instances (i.e., 2 copies of IE pun). IF IT IS NOT possible, how would one go about switching between individual tabs, that are running sequentially?

Thanks!

like image 604
Trevor Tiernan Avatar asked Aug 09 '13 15:08

Trevor Tiernan


People also ask

Can Selenium run multiple tabs?

Just like you might open web pages in different tabs locally, it's also possible to have multiple tabs up in one browser during a Selenium test.

How does Selenium work with multiple tabs in Python?

Ways to open multiple tabs using Selenium: We need to call “execute_script” method which in turn executes window. open('about:blank', 'secondtab') javascript. Then we need to switch to that tab and for that tab can give any valid URL.


2 Answers

If there is a link that opens up a new window/tab, then you can use driver.switchTo().window();

However, if you want to run something on multiple windows, then I recommend having multiple instances of webdriver. It is much easier to manage, and is supported (There are workarounds on opening a new tab/window, such as pressing a hotkey that opens a new window, but they aren't supported).

If you are wanting to have multiple threads all act on the same driver instance, but different tabs, that is NOT possible.

like image 154
Nathan Merrill Avatar answered Oct 19 '22 17:10

Nathan Merrill


It is possible to switch between individual tabs without having multiple browser instances.
There is a difference how web driver handles different windows and how it handles different tabs.

Case 1:
In case there are multiple windows, then the following code can help:

//Get the current window handle String windowHandle = driver.getWindowHandle();  //Get the list of window handles ArrayList tabs = new ArrayList (driver.getWindowHandles()); System.out.println(tabs.size()); //Use the list of window handles to switch between windows driver.switchTo().window(tabs.get(0));  //Switch back to original window driver.switchTo().window(mainWindowHandle); 


Case 2:
In case there are multiple tabs in the same window, then there is only one window handle. Hence switching between window handles keeps the control in the same tab.
In this case using Ctrl + \t (Ctrl + Tab) to switch between tabs is more useful.

//Open a new tab using Ctrl + t driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t"); //Switch between tabs using Ctrl + \t driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"\t"); 

Detailed sample code can be found here:
http://design-interviews.blogspot.com/2014/11/switching-between-tabs-in-same-browser-window.html

like image 37
Sourabh Avatar answered Oct 19 '22 15:10

Sourabh