2013-06-04 263 views
2

對於我的測試情況下,我試着用以下方法設置餅乾的餅乾,但它是沒有得到設置黃瓜/水豚/硒 - 設置

1)browser = Capybara.current_session.driver.browser 
    browser.manage.add_cookie :name => "xxx", :value => "cookie" 

2)driver = Capybara.current_session.driver 
    br = driver.browser.send(:bridge) 
    br.addCookie({ 
    'name' => "xxx", 
    'domain' => "localhost", 
    'value' => "cookie", 
    'path' => '/', 
    'expires' => (Time.now + 100.years).to_i 
    }) 

讓我知道如果我錯過了什麼或者我有以其他方式做它

+0

第一個變體看起來不錯。請詳細說明'它沒有設置'的意思。 –

+0

適用於我,儘管我用'page.driver.browser.manage.add_cookie()'調用了它。 –

+1

它強烈依賴於實際的驅動程序:請參閱http://stackoverflow.com/a/17244628/651651。 – wrtsprt

回答

0

水豚必須先訪問您正在測試的網站。在您設置任何cookie之前,這是一個必需的步驟。

這工作:

visit '/' 
browser = Capybara.current_session.driver.browser 
browser.manage.add_cookie name: "name", value: "value" 

爲了獲得最佳性能,要麼只是運行一次這一步,或者看到如果cookie已經設置。這裏是設置了cookieconsent cookie的實際代碼,它繞過了cookie牆。

browser = page.driver.browser 
unless browser.manage.cookie_named("cookieconsent") 
    visit '/' 
    browser.manage.add_cookie name: "cookieconsent", value: "dismiss" 
end 

我正在使用page.driver來獲取驅動程序。這與Capybara.current_session.driver是一樣的。