简体   繁体   中英

How to switch between different chrome browser window opened by different WebDriver using selenium in Python?

I searched for this question,and I found an idea using driver.switch_to.window(),but it didn't work as expect:

from selenium import webdriver

driver1=webdriver.Chrome("D:\Python\Files\chromedriver.exe")
driver1.get('https://www.google.com')


driver2=webdriver.Chrome("D:\Python\Files\chromedriver.exe")
driver2.get('https://www.bing.com/')

driver1.switch_to.window(driver1.current_window_handle)

above code will first open a chrome window and go to google,then will open another chrome window and go to bing,then

driver1.switch_to.window(driver1.current_window_handle)

seems didn't work,the window showing bing still shows on top of the window showing google. Anyone have any idea?I think

driver1.switch_to.window(driver1.current_window_handle)

may have some BUG.

As you have used two WebDriver instances as driver1 and driver2 respectively to openthe urls https://www.google.com (eg windowA) and https://www.bing.com/ (eg windowB) it is worth to mention that the function switch_to.window() is a WebDriver method. So, driver1 can control only windowA and driver2 can control only windowB .

For Selenium to interact with any of the Browsing Window , Selenium needs focus . So to iterate among the different Browsing Windows you can shift the focus to the different Browsing Window using JavascriptExecutor as follows :

((JavascriptExecutor) driver1).executeScript("window.focus();");
((JavascriptExecutor) driver2).executeScript("window.focus();");

I believe you have a different concept of "window" in driver.switch_to.window(). In chrome browser, it means "tab". It's not another chrome browser or browser window like what are you trying to do in your code.

If switch_to.window() what you really want, I'll give an example how to use it:

driver=webdriver.Chrome("D:\Python\Files\chromedriver.exe")
driver.get('https://www.google.com')
# open a new tab with js
driver.execute_script("window.open('https://www.bing.com')")
driver.switch_to.window(driver.window_handles[-1])
# now your driver is pointed to the "tab" you just opened

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM