2013-06-04 6 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

Первый вариант выглядит хорошо для меня. Пожалуйста, уточните, что вы подразумеваете под 'it is not get set' –

+0

Работает для меня, хотя я назвал его' page.driver.browser.manage.add_cookie() '. –

+1

Это сильно зависит от фактического драйвера: см. Http://stackoverflow.com/a/17244628/651651. – wrtsprt

ответ

0

Capybara должен посетить веб-сайт, который вы тестируете первым. Это необходимый шаг, прежде чем вы сможете установить любой файл cookie.

Это работает:

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

Для лучшей производительности, либо запустить этот шаг только один раз, или посмотреть, если печенье уже установлен. Вот фактический код, который устанавливает cookie cookieconsent, который обходит стену печенья.

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.

Смежные вопросы