shw1231
shw1231

Reputation: 41

Open a Url in new tab and tab switching in IE using python and selenium

I am trying to open a new tab in IE10 and selenium 2.45. It is able to open a new tab using pyrobot. But when i am trying to open url in new tab, it is getting opened in first tab. Focus is not set to second tab and hence it is not working and also switching of tab is not working. please provide solution. I have provided my code below: Code:

# Open first tab
IEDriverPath = "/../../../../../../../IEDriverServer.exe"
driver = webdriver.Ie(IEDriverPath, port=5555)
pyseldriver.get("https://www.google.com/")
time.sleep(5)
tab1 = pyseldriver.current_window_handle

#open another tab
obja = pyrobot.Robot()
obja.key_press(pyrobot.Keys.ctrl)
obja.key_press(pyrobot.Keys.t)
obja.key_release(pyrobot.Keys.ctrl)
obja.key_release(pyrobot.Keys.t)
time.sleep(FrameworkConstants.Time02)

pyseldriver.switch_to_window(pyseldriver.window_handles[-1])
tab2 = pyseldriver.current_window_handle
pyseldriver.get("https://www.python.org/")
time.sleep(5)

#Switching to first tab and opening new url
pyseldriver.switch_to_window(tab1)
pyseldriver.get("https://www.yahoo.com/")
time.sleep(10)

#switching to second tab and opening new url
pyseldriver.switch_to_window(tab2)
pyseldriver.get("https://www.gmail.com/")
time.sleep(10)

But links are not opening in new tab and switching is also not happening. All links are getting opened in first tab itself.

Upvotes: 3

Views: 2461

Answers (2)

Shaik
Shaik

Reputation: 399

Try this below code:

import selenium.webdriver as webdriver
from selenium.webdriver.common.keys import Keys


driver = webdriver.Firefox()
driver.get("http://stackoverflow.com/")

stackele = driver.find_element_by_id("blurb")
if stackele.is_displayed():
    stackele.send_keys(Keys.CONTROL + 't')
    driver.get("https://www.python.org/")

pythele = driver.find_element_by_link_text("Python")
if pythele.is_displayed():
    pythele.send_keys(Keys.CONTROL + Keys.TAB)
    driver.get("https://www.yahoo.com/")

yahooele = driver.find_element_by_link_text("Yahoo")
if yahooele.is_displayed():
    yahooele.send_keys(Keys.CONTROL + Keys.TAB)
    driver.get("https://www.gmail.com/")

Upvotes: -1

Saifur
Saifur

Reputation: 16201

Looks like switch_to_window is deprecated in version 2.45. Use switch_to.window instead.

Code taken from webdriver.py. See this

 def switch_to_active_element(self):
        """ Deprecated use driver.switch_to.active_element
        """
        warnings.warn("use driver.switch_to.active_element instead", DeprecationWarning)
        return self._switch_to.active_element

    def switch_to_window(self, window_name):
        """ Deprecated use driver.switch_to.window
        """
        warnings.warn("use driver.switch_to.window instead", DeprecationWarning)
        self._switch_to.window(window_name)

Upvotes: 3

Related Questions