Send keys control + click in Selenium with Python bindings

Solution 1:

Use an ActionChain with key_down to press the control key, and key_up to release it:

import time
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()

driver.get('http://google.com')
element = driver.find_element_by_link_text('About')

ActionChains(driver) \
    .key_down(Keys.CONTROL) \
    .click(element) \
    .key_up(Keys.CONTROL) \
    .perform()

time.sleep(10) # Pause to allow you to inspect the browser.

driver.quit()

Solution 2:

Two possible solutions:

opening a new tab

self.driver = webdriver.Firefox()
self.driver.find_element_by_tag_name('body').send_keys(Keys.COMMAND + 't') 

this is the solution for MAC OSX. In other cases you can use the standard Keys.CONTROL + 't'

opening a new webdriver

driver = webdriver.Firefox() #1st window
second_driver = webdriver.Firefox() #2nd windows