2011-09-11 26 views
10

Tôi đang viết các bài kiểm tra dưa chuột để kiểm tra chức năng của người dùng 'Nhớ tôi' và để làm điều đó trong cuộc sống thực, người dùng sẽ đóng trình duyệt, mở lại trình duyệt và quay lại trang web.Mô phỏng đóng/mở lại trình duyệt trong dưa chuột/capybara?

thử nghiệm của tôi cho đến nay trông như thế này:

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 

Tuy nhiên tôi không biết những gì để điền vào cho 'Khi tôi đóng và mở lại trình duyệt' định nghĩa bước.

Có ai biết làm thế nào tôi sẽ làm điều này (hoặc nếu đây không phải là những gì tôi nên làm, làm thế nào tôi nên thử nghiệm nó?)

+0

Bạn có tìm thấy câu trả lời cho câu hỏi của mình không? chúng tôi đang cố gắng kiểm tra việc sử dụng localStorage và ứng dụng ngoại tuyến của chúng tôi. đôi khi chúng ta cần phải mở lại trình duyệt hoặc mở trong trình duyệt khác (nó có thể là cùng một trình duyệt nhưng với dữ liệu localstorage sạch và cookie trống). chúng tôi đã tạo ra ngã ba của một ngã ba khác (hỗ trợ html5) và hợp nhất với capybara-webkit (0.7.2) với hỗ trợ localStorage. Nhưng bây giờ chúng tôi gặp khó khăn khi mở lại các bước trình duyệt. – oivoodoo

+0

Bạn có tìm thấy câu trả lời cho câu hỏi của mình không? –

+0

Tôi không tìm thấy câu trả lời, nhưng cuối cùng kết thúc việc loại bỏ bài kiểm tra. Lấy làm tiếc! – sevenseacat

Trả lời

1

Bạn chỉ có thể xóa cookie.

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

Tôi nghĩ rằng các kịch bản là hỗ trợ để xác minh cookie được đặt và đọc chính xác trong các phiên khác nhau, do đó việc xóa cookie sẽ phá vỡ thử nghiệm. –

2

Tôi sử dụng Show me the cookies.

Add để bó với gem 'show_me_the_cookies' và sau đó thêm World(ShowMeTheCookies) trong bạn features/support/env.rb

Sau đó chỉ cần xác định một bước:

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

Tôi đã cố gắng để kiểm tra giống như vậy, đã hoạt động như sau:

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 

Một vài điều:

  • page.driver.quit loại bỏ các tập tin cookie, đó là lý do tại sao tôi đang làm điệu nhảy với cookie
  • tôi đã cố gắng đóng cửa sổ sử dụng page.driver.close_window(page.driver.current_window_handle), sau đó chuyển lại cho nó với page.driver.switch_to_window(handle) nhưng điều đó không làm việc
  • tôi đã cố gắng đóng cửa sổ sử dụng page.driver.close_window(page.driver.current_window_handle), sau đó chuyển sang một cửa sổ mới page.driver.switch_to_window(page.driver.open_new_window) nhưng điều đó không làm việc

tôi cảm thấy như tôi không thực sự hiểu cách mối quan hệ browser/window đang hoạt động ở Capybara. Ngoài ra nó có vẻ như sao chép trên các tập tin cookie là loại gian lận kiểm tra hội nhập của tôi. Hy vọng rằng có một cách tốt hơn để đạt được tất cả điều này trong các phiên bản sau.

Các vấn đề liên quan