2012-06-27 44 views
1

我有一些代碼,看起來像這樣:如何恢復瀏覽器會話或使用現有的瀏覽器窗口與Selenium-Python?

print 'Starting browser' 
browser = webdriver.Firefox() 

print 'Loading %s' % base_url 
browser.get(base_url) 

try: 
    username_el = browser.find_element_by_css_selector('#username') 
    username_el.send_keys(credentials['username']) 
    password_el = browser.find_element_by_css_selector('#password') 
    password_el.send_keys(credentials['password']) 
    password_el.send_keys(Keys.RETURN) 
    print 'Logging in' 
    browser.get(base_url) 
except NoSuchElementException: 
    print 'Already logged in' 
    pass 

的問題是,它必須每次登錄的時候(從來沒有車次除外)。這有兩個問題:

  1. 這使得因爲我必須等待它每次登錄在我的測試中需要更長的時間
  2. 它擊中的服務器超過了它需要

所以,我想要保存並恢復我的瀏覽器會話,或者讓瀏覽器保持打開狀態並讓Selenium控制它。

這可能嗎?如果是這樣,怎麼樣?

回答

1

我嘗試使用get_cookies()來獲取任何會話cookie,保存在瀏覽器會話(磁盤或其他)之間持續存在的某個地方,並在您拉起新的時候使用add_cookie()重新添加cookie瀏覽器會話。

還沒有測試過這個雖然...

+0

我會試試看。我嘗試手動從我的「真實」瀏覽器中竊取cookie並複製這些cookie,但沒有奏效。我會嘗試用'get_cookies'來抓取它們......也許會話有點不同。 – mpen

+1

確實有效。之所以失敗,是因爲[文檔](http://selenium-python.readthedocs.org/en/latest/api.html?highlight=add_cookie#selenium.webdriver.remote.webdriver.add_cookie)充滿了謊言。它實際上需要一個帶有名稱,值,域,主機,到期鍵的字典,而不是鍵/值對。 – mpen