2011-01-31 4 views
4

저장하지 않은 것을 남기기 전에 사용자에게 경고하는 onbeforeunload 함수가있는 'ask_a_question'페이지가 있습니다 (예 : SO : P와 유사). 나는 자바 스크립트를 많이 사용하기 때문에 capybara와 webdriver에 오이를 사용하여 @javascript 태그를 추가하여 테스트하고 있습니다.Capybara and javascript onbefoureunload

@javascript 
Scenario: add a question 
    Given I login as "Mauricio" 
    And I go to the create question page 
    Then I should see "Ask a Question" within "header" 

을하지만 테스트가 pases하면, 카피 바라 (또는 WebDriver, 난 몰라) 다음입니다 onbeforeunload 경고는 다음과 같은 시험을 속이고 표시되는 다른 시험에 대해 동일한 브라우저 창을 다시 사용하려고 : 오이의 기능은 다음과 같이 나타납니다.

내 기능이 페이지를 닫거나 종료하지 않기 때문에. 나는 경고를 받아들이 기 위해 무언가를 추가하는 것이 좋은 생각이라고 생각하지 않는다. 하지만 솔직히 나는 꽤 길을 잃었다.

각 @javascript 테스트에 대해 새 브라우저 창을 사용하거나 자동으로 onbeforeunload 경고를 닫도록 capybara에 지시 할 수 있습니까?

고맙습니다

답변

5

당신이 page.driver.browser.switch_to.alert.dismiss (docs here)를 사용할 수는 경고를 제거합니다.

당신은 RSpec에와 카피 바라를 사용하는 모든 사용자에 대한 후크

After "@javascript" do 
    page.driver.browser.switch_to.alert.dismiss 
    # or accept it if that is what you prefer 
    page.driver.browser.switch_to.alert.accept 
end 
+0

위대한! 시도해 볼게. – Mauricio

+0

은 page.driver.browser.switch_to.alert.accept와 함께 매력으로 작동합니다. 답변을 업데이트하십시오. – Mauricio

+0

닫기 닫기 취소하지 않습니까? –

1

비슷한 대답 한 후 오이에 넣고 있었다. 이 코드는 각 테스트 후에 'about : blank'를 방문합니다.

context 'page that displays an alert when navigating away' do 

    after(:each) do 
    begin 
     accept_confirm { visit('about:blank') } 
    rescue Capybara::ModalNotFound 
     # For examples that don't end with an alert 
    end 
    end 

    ... 
end