我搜索了这个问题,我发现了一个使用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。
答案 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