4

保存していないものを残す前にユーザーに警告する onbeforeunload 関数を備えた「ask_a_question」ページがあります (SO :P のように!)。キュウリとカピバラと webdriver を使用してテストしています。JavaScript を多く使用するため、@javascript タグを追加します。キュウリの機能は次のようになります。

@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"

しかし、テストがパスすると、Capybara (または WebDriver、私にはわかりません) が同じブラウザー ウィンドウを他のテストに再利用しようとすると、onbeforeunload アラートが表示され、次のテストが台無しになります。

私の機能は、ページ自体を閉じたり終了したりしていないためです。アラートを受け入れるために何かを追加するのは良い考えではないと思います。しかし、正直なところ、私はかなり迷っています。

@javascript テストごとに新しいブラウザ ウィンドウを使用するか、onbeforeunload アラートを自動的に閉じるようにカピバラに指示するにはどうすればよいですか?

ありがとう

4

2 に答える 2

5

page.driver.browser.switch_to.alert.dismiss ( docs here ) を使用してアラートを取り除くことができます。

これをフックの後にキュウリに入れることができます

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
于 2011-04-12T09:34:26.967 に答える
2

Rspec と Capybara を使用しているすべての人に同様の回答です。このコードは、各テストの後に「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
于 2015-05-06T20:53:03.590 に答える