2012-04-08 68 views
2
Summary of tools: 
watir-webdriver 1.8.17 
Mac OS X 10.7.3 
Chrome 18.0.1025.151

我目前正在使用Watir WebDriver在多個網站上自動化Chrome會話。我需要在整個會話期間的某些點備份網頁瀏覽器的狀態(cookie,緩存等)。最初,我想我可以通過在必要的地方複製~/Library/Application Support/Google/Chrome/Default來完成Ruby的文件IO庫。但是,並未發現使用Watir WebDriver創建的Chrome會話將所需信息存儲在此默認位置。我怎樣才能找到這些數據來支持它?這些信息是否存儲在別處?除Watir之外還有什麼能夠讓這更容易嗎?如何在Watir自動化後備份瀏覽器狀態

回答

6

我終於有了解決辦法!

看起來,watir-webdriver以隨機路徑存儲瀏覽器狀態/用戶數據。默認情況下,這可以在這裏找到(其中XXXXXX是隨機標識符):

/private/var/folders/2v/vkd2v3vs5njf69m59nqzc16m0000gn/T/.com.google.Chrome.XXXXXX/Default/

不是依靠這個默認的,隨機的路徑,您可以指定使用以下標誌的用戶數據的精確位置:

Watir::Browser.new :chrome, :switches => %w[--user-data-dir=/path/to/user/data]

那麼緩存,餅乾等可以使用Ruby的標準庫進行備份,刪除等。希望這可以幫助別人。

編輯:如果無法找到其中的Watir-webdriver的默認情況下,存儲用戶數據,發現運行的Watir-的webdriver和top Chrome的進程ID。獲得pid後,在終端中鍵入lsof -p <pid>以查找用​​戶數據的路徑。

1

我喜歡做的另一件事是序列化(保存)的Watir ::瀏覽器對象到一個文件中使用YAML,就像這樣:

require "yaml" 
File.open("browserObj.yaml", 'w').write YAML::dump(@browser) 

browserObj.yaml文件將包含各種各樣的可讀/可分析文本中的內部細節,包括任何瀏覽器的PID,溫度曲線的路徑等。

profile_dir: /tmp/webdriver-rb-profilecopy20121201-1981-9o9t9a