我正在使用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
有人知道如何处理这个问题吗?
由于
答案 0 :(得分:2)
点击"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');")
答案 1 :(得分:2)
重新启动Chrome是一个坏主意,因为Chromedriver引用了原始的Chrome流程。
no such window: window was already closed
所以... browser
仍然指向旧窗口。
只需在创建Chromedriver实例时设置该选项,而不是尝试重新启动Chrome。
from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--enable-quic')
chrome = webdriver.Chrome(chrome_options=chrome_options)