2011-09-11 108 views
10

我正在寫黃瓜測試來測試用戶的「記住我」類型的功能,並且爲了在現實生活中做到這一點,用戶將關閉瀏覽器,重新打開瀏覽器並返回網站。模擬關閉/重新打開黃瓜/水豚瀏覽器?

我的測試,到目前爲止是這樣的:

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

但是我不知道該怎麼填寫了「當我關閉並重新打開瀏覽器」步驟定義。

有誰知道我會怎麼做這個(或如果這是不是我應該做的,我應該怎麼是測試它?)

+0

您是否找到適合自己的答案?我們正在嘗試測試localStorage的使用情況和我們的離線應用程序。有時我們需要重新打開瀏覽器或在另一個瀏覽器中打開它(它可以是相同的瀏覽器,但具有乾淨的本地存儲數據和空cookie)。我們已經創建了另一個fork的分支(html5支持),並且通過localStorage支持與capybara-webkit(0.7.2)合併。但是現在我們遇到了重新打開瀏覽器步驟的麻煩。 – oivoodoo

+0

你找到了你的問題的答案? –

+0

我沒有找到答案,但最終放棄了測試。抱歉! – sevenseacat

回答

1

您可以清除cookie。

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

我認爲這些場景支持驗證cookie是否在不同的會話中被正確設置和讀取,因此清除cookie會破壞測試。 –

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 
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刪除餅乾,這就是爲什麼我在做與餅乾
  • 我試圖關閉使用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關係。此外,似乎複製cookie是一種欺騙我的集成測試。希望在未來的版本中有更好的方法來實現這一切。