2013-12-12 131 views
1

我無法使用watir-webdriver和browser.cookies.clear清除Cookie 是否有其他替代方法?無法使用browser.cookies.clear清除Cookie

+0

我曾與水豚刪除cookie以及問題和下面的帖子幫我解決我的問題:如何清除水豚測試使用cookie( Selenium and Rack :: Test)](http://makandracards.com/makandra/16117-how-to-clear-cookies-in-capybara-tests-both-selenium-and-rack-test) – katranci

+0

調查問題後我發現cookies正在使用cookies.clear方法清除,但是我遇到的問題是我通過我的測試站點登錄到外部站點(Facebook)。所以cookies.clear方法只適用於我的域名,我的測試失敗,因爲我無法清除外部網頁上的cookie。我嘗試去外部網站,並在每個場景後清除餅乾並完成了工作,但它確實是一個骯髒的伎倆,並會使我的測試變得脆弱。任何更好的想法? – Vamsi

+0

嘿它可能是瀏覽器問題..更新瀏覽器和寶石 – unknownbits

回答

3

這是據我所知的基於瀏覽器的限制,由於擔心安全和隱私。

Webdriver通過javascript與瀏覽器進行交互,並且javascript不允許清除所有的cookie(想想惡意網站上的惡意程度如何)。在非測試環境中,大多數正在執行的JS來自正在訪問的站點的服務器。因此,它允許做的最多的是清除「當前域」的cookie,例如屬於當前URL的Cookie。因此,如果網頁想要清除所有自己的Cookie,那沒問題,但不允許清除屬於其他域的Cookie。

所以,如果你想所有的測試開始與新鮮的餅乾,則需要在「之前」在env.rb節進入有問題的網站的根目錄,然後清除Cookie中的某些

順便說一句,同樣的限制適用於設置cookie,如果你想爲特定的站點創建cookie,你需要在嘗試創建它們之前導航到該站點,否則什麼都不會被創建。

0

這不是一個答案,而是僅供參考。

假設chrome是選定的瀏覽器,當黃瓜運行時,從ps -ef | grep chrome的輸出中,我們將能夠找到定製的用戶數據目錄,如下所示。

--user-data-dir=/tmp/.org.chromium.Chromium.G2DgPo 

這目錄內,我們就可以找到Default文件夾下存儲的Cookies文件。

不確定直接刪除該數據庫文件是否可以滿足需求。在一個正常的瀏覽器會話的原因,這樣的運行時數據存儲在

~/.config/google-chrome/Default/Cookies