如何在Python中使用selenium在不同的WebDriver打开的不同chrome浏览器窗口之间切换?

时间:2018-03-11 03:43:14

标签: python selenium selenium-webdriver webdriver

我搜索了这个问题,我发现了一个使用driver.switch_to.window()的想法,但它并没有像预期的那样工作:

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)

上面的代码将首先打开一个chrome窗口并转到google,然后将打开另一个chrome窗口并转到bing,然后

driver1.switch_to.window(driver1.current_window_handle)

似乎没有用,显示bing的窗口仍显示在显示谷歌的窗口顶部。 有人有任何想法吗?我想

driver1.switch_to.window(driver1.current_window_handle)

可能有一些BUG。

2 个答案:

答案 0 :(得分:1)

由于您分别使用两个 WebDriver 实例作为 driver1 driver2 来打开网址https://www.google.com(例如windowA)和{ {3}}(例如windowB)值得一提的是函数https://www.bing.com/ WebDriver 方法。因此, driver1 只能控制 windowA ,而 driver2 只能控制 windowB

要让 Selenium 与任何浏览窗口进行交互, Selenium 需要关注。因此,要在不同的浏览Windows 之间进行迭代,您可以使用 JavascriptExecutor 将焦点转移到不同的浏览窗口,如下所示:

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

答案 1 :(得分:0)

我相信你有一个不同的概念" window"在driver.switch_to.window()中。在Chrome浏览器中,它表示" tab"。它不是另一个Chrome浏览器或浏览器窗口,就像您在代码中尝试做的那样。

如果你真正想要的是switch_to.window(),我将举例说明如何使用它:

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