2015-03-03 56 views
1

如果我從Python啓動Selenium並關閉瀏覽器窗口,下次嘗試讓WebDriver執行某些操作時,腳本會掛起。請注意,我正在關閉瀏覽器窗口,同時使瀏覽器本身處於打開狀態 - 我是在Mac上,並且瀏覽器(在我的情況下爲Chrome)可能保持打開狀態,即使沒有任何窗口。這裏有一個例子:如果我關閉瀏覽器窗口,Selenium(來自Python)會掛起

import time 
from selenium import webdriver 

driver = webdriver.Chrome() 
driver.get("http://www.stackoverflow.com/") 
time.sleep(5) # Let's say we close Chrome window during this time 
print "Trying to open second page" 
driver.get("http://www.python.org/") 
print "You won't get here if you closed the Chrome window" 

理想我想硒要麼使一個新的窗口,我還是讓我告訴大家,有沒有打開的窗口,讓我創造一個自己。

回答

0

這不會發生什麼事情。您看到的瀏覽器窗口並非都可以通過硒與之交談。

Selenium產生一個瀏覽器,運行w3c組件並可以與之通話。這就好像一個生活在網頁瀏覽器中的迷你http服務器,selenium會談到點擊事物並做它的業務。它被稱爲WebDriver。 http://www.w3.org/TR/webdriver/

當您關閉瀏覽器打開並與硒接口...你打破硒製造的插座連接,它無法找到它。 AFEK:Selenium只是在跟瀏覽器的webdriver界面聊天。

你的程序將不得不尋找活動的瀏覽器,獲取他們的內存地址,打開一個新的硒webdriver並指向它...這將需要一點重寫硒源作爲調用webdriver現在啓動一個新的瀏覽器實例。

+0

好的,謝謝。有沒有一種方法可以檢測到套接字已損壞(而不是讓我的程序掛起)?或者'driver.get(「http://www.python.org/」)'可以打開一個新的套接字而不是等待(現在已經死了的)舊套接字? – kuzzooroo 2015-03-04 22:02:00

+0

這不在Selenium的範圍之內,因爲他們喜歡說。在交互式機器人/瀏覽器中不是該項目的目標,使用該瀏覽器模擬人的界面是。 GL! – NanoMage 2015-03-05 17:27:57