The problem :
Simply start a .py with: driver = webdriver.Chrome()
Open another tab manualy and use :
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.TAB)
It won't switch tabs.
If you open the tab using :
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + "t")
The problem isn't there, but won't fix my issue. I need to open tabs manualy and switch later using selenium.
Using the command tab send_key
works fine when using firefox
.
Any suggestions?
Example 1:
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
# Open 2 extra tabs
driver.get("http://www.google.com")
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + "t")
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + "t")
# Switch tabs
time.sleep(2)
print "Press TAB"
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.TAB)
time.sleep(2)
print "Press TAB"
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.TAB)
time.sleep(2)
print "Press TAB"
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.TAB)
Example 2:
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get("http://www.google.com")
raw_input("Open 2 tabs manually")
# Switch_to_window won't help
#firstpage = driver.window_handles[0]
#driver.switch_to_window(firstpage)
time.sleep(2)
print "Press TAB"
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.TAB)
time.sleep(2)
print "Press TAB"
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.TAB)
time.sleep(2)
print "Press TAB"
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.TAB)
Example 1 Works. In example 2 the send_keys is ignored.
Update:
If you switch to the handle you want to focus use:
driver.execute_script('alert("Focus window")')
driver.switch_to.alert.accept()