模拟关闭/重新打开黄瓜/水豚的浏览器?

时间:2011-09-11 07:15:41

标签: ruby-on-rails-3 cucumber capybara

我正在编写黄瓜测试来测试用户“记住我”类型的功能,为了在现实生活中这样做,用户将关闭浏览器,重新打开浏览器,然后返回网站。

到目前为止我的测试看起来像这样:

Scenario: 'Remember me' checked
  Given I have checked "Remember me"
  And I am logged in as "test@test.com"
  When I close and re-open my browser
  And I come back to the dashboard
  Then I should be on the dashboard

但是我不知道在“当我关闭并重新打开浏览器”步骤定义时要填写什么。

有谁知道我会怎么做(或者如果这不是我应该做的,我应该如何测试呢?)

5 个答案:

答案 0 :(得分:2)

我使用Show me the cookies

添加到gem 'show_me_the_cookies'的捆绑包,然后在World(ShowMeTheCookies)

中添加features/support/env.rb

然后定义一个步骤:

When /^I reopen the browser$/ do
  expire_cookies
  visit [ current_path, page.driver.request.env['QUERY_STRING'] ].reject(&:blank?).join('?')
end

答案 1 :(得分:1)

答案 2 :(得分:1)

您可以清除Cookie。

When /^I clear cookies$/ do
  browser = Capybara.current_session.driver.browser
  browser.manage.delete_all_cookies
end

答案 3 :(得分:1)

答案 4 :(得分:0)

我试图测试同样的事情,让它像这样工作:

When(/^I close and reopen the browser$/) do
  # Get cookies we want to keep
  remember_me_cookie = page.driver.browser.manage.cookie_named('remember_user_token')

  # Close the window and delete the cookies
  page.driver.quit

  # Reopen the window
  page.driver.switch_to_window(page.driver.current_window_handle)

  # Go to our domain and add our cookies back in
  visit('/') 
  remember_me_cookie.nil? ? @current_user = nil : page.driver.browser.manage.add_cookie(remember_me_cookie) 

  # Refresh the domain to activate the cookies
  visit('/') 
end

一些事情:

  • page.driver.quit删除了Cookie,这就是为什么我要用饼干跳舞
  • 我尝试使用page.driver.close_window(page.driver.current_window_handle)关闭窗口,然后使用page.driver.switch_to_window(handle)切换回来但不起作用
  • 我尝试使用page.driver.close_window(page.driver.current_window_handle)关闭窗口,然后切换到新窗口page.driver.switch_to_window(page.driver.open_new_window),但这不起作用

我觉得我并不真正了解browser / window关系在Capybara中是如何运作的。此外,似乎复制cookie有点欺骗我的集成测试。希望在未来版本中有更好的方法来实现所有这些。