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

0
0

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:

    driver.switch_to_window(None)

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

    for handle in driver.window_handles:
    driver
    .switch_to_window(handle)
  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)
act
.key_down(browserKeys.CONTROL)
act
.click("").perform()
act
.key_up(browserKeys.CONTROL)

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

actions.key_down(Keys.CONTROL)
element
.send_keys('t')
actions
.key_up(Keys.CONTROL)
  • You must to post comments
0
0

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.

  • You must to post comments
Showing 1 result
Your Answer
Post as a guest by filling out the fields below or if you already have an account.
Name*
E-mail*
Website