2017-05-21 9 views
2

Chromeでいくつかのチェックを行うためにSeleniumを使用しています。 私は自動的に "chrome:// flags /#enable-quic"をブラウズしています。そこにドロップダウン(自動的に)で "Enable"を選択します。 下記のように、変更を有効にするためには再起動する必要があります。 新しい再起動されたウィンドウで新しいタブを開き、さらにいくつかのことをしたいと思います。新しいウィンドウのセレン取得セッションID - Python

コードのスニップ:

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 

誰かがこれを処理する方法のアイデアを持っていますか?あなたは新しいChromeウィンドウを取得"Refresh"ボタンをクリックした後

おかげ

答えて

2

。あなたは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');") 
2

Chromedriverは、元のクロムプロセスへの参照を持っているので、再起動Chromeは悪い考えです。

no such window: window was already closed

ので... browserはまだ古い窓を指しています。

Chromeを再起動する代わりに、Chromedriverインスタンスを作成するときにオプションを設定するだけです。

from selenium import webdriver 

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