我搜索了这个问题,发现了一个使用 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 的窗口仍然显示在显示 google 的窗口顶部。 有人有什么想法吗?我想
driver1.switch_to.window(driver1.current_window_handle)
可能有一些BUG。
最佳答案
由于您已使用两个WebDriver实例分别作为driver1和driver2来打开网址https://www.google.com (例如窗口A)和https://www.bing.com/ (例如 windowB)值得一提的是函数 switch_to.window()
是一个WebDriver方法。因此,driver1 只能控制windowA,driver2 只能控制windowB。
要使Selenium与任何浏览窗口交互,Selenium需要焦点。因此,要在不同的浏览窗口之间进行迭代,您可以使用JavascriptExecutor将焦点转移到不同的浏览窗口,如下所示:
Python:
driver1.execute_script("window.focus();") driver2.execute_script("window.focus();")
Java:
((JavascriptExecutor) driver1).executeScript("window.focus();"); ((JavascriptExecutor) driver2).executeScript("window.focus();");
关于python - 如何在Python中使用selenium在不同WebDriver打开的不同chrome浏览器窗口之间切换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56900393/