zposten zposten - 1 month ago 5
Python Question

How to open a new window on a browser using Selenium WebDriver for python?

I am attempting to open a new tab OR a new window in a browser using selenium for python. It is of little importance if a new tab or new window is opened, it is only important that a second instance of the browser is opened.

I have tried several different methods already and none have succeeded.

  1. Switching to a window that does not exist with hopes that it would then open a new window upon failure to locate said window:


  2. Iterating through open windows (although there is currently only one)

    for handle in driver.window_handles:

  3. Attempting to simulate a keyboard key press

    from selenium.webdriver.common.keys import Keys
    driver.send_keys(Keys.CONTROL + 'T')

The problem with this one in particular was that it does not seem possible to send keys directly to the browser, only to a specific element like this:

driver.find_element_by_id('elementID').send_keys(Keys.CONTROL + 'T')

However, when a command such as this is sent to an element, it appears to do absolutely nothing. I attempted to locate the topmost HTML element on the page and send the keys to that, but was again met with failure:

driver.find_element_by_id('wrapper').send_keys(Keys.CONTROL + 'T')

Another version of this I found online, and was not able to verify its validity or lack thereof because I'm not sure what class/module which needs importing

act = ActionChains(driver)

Something very similar with different syntax (I'm not sure if one or both of these is correct syntax)



How about you do something like this

driver = webdriver.Firefox() #First FF window
second_driver = webdriver.Firefox() #The new window you wanted to open

Depending on which window you want to interact with, you send commands accordingly

print driver.title #to interact with the first driver
print second_driver.title #to interact with the second driver

For all down voters:

The OP asked for "it is only important that a second instance of the browser is opened.". This answer does not encompass ALL possible requirements of each and everyone's use cases. The other answers below may suit your particular need.