Selenium获取新窗口的会话ID - Python



我正在使用Selenium来对Chrome进行一些检查。我自动浏览到"chrome://flags/#enable-quic",然后在下拉列表中(自动(选择"启用"。如下所述,必须重新启动才能使更改生效。我想在重新启动的新窗口中打开一个新选项卡以执行更多操作。

代码的截图:

browser = webdriver.Chrome()
browser.get("chrome://flags/#enable-quic")
browser.find_element_by_xpath("//*[@id='enable-quic']/table/tbody/tr/td/div[1]/div/div[2]/select/option[2]").click() #Select "Enable"
time.sleep(5)
browser.find_element_by_xpath("//*[@id='flagsTemplate']/div[5]/button").click() #Click relaunch
time.sleep(5)
browser.execute_script("window.open('https://www.gmail.com');")  #Exception after this line

我得到的例外是:

selenium.common.exceptions.NoSuchWindowException: Message: no such window: window was already closed

有人知道如何处理这个问题吗?

谢谢

单击"Refresh"按钮后,您将获得新的Chrome窗口。您应该在执行JavaScript之前尝试切换到该窗口:

browser = webdriver.Chrome()
browser.get("chrome://flags/#enable-quic")
browser.find_element_by_xpath("//div[@id='enable-quic']//select[@class='experiment-select']/option[2]").click()
time.sleep(5)
browser.find_element_by_xpath("//button[@class='experiment-restart-button']").click()
time.sleep(5)
browser.switch_to.window(browser.window_handles[0])
browser.execute_script("window.open('https://www.gmail.com');")
重新启动

Chrome是一个坏主意,因为Chromedriver引用了原始的chrome进程。

no such window: window was already closed

所以。。。 browser仍然指着旧窗户。

无需尝试重新启动 Chrome,只需在创建 Chrome 驱动程序实例时设置该选项即可。

from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--enable-quic')
chrome = webdriver.Chrome(chrome_options=chrome_options)

最新更新