Капибара и джаваскрипт - PullRequest
       22

Капибара и джаваскрипт

4 голосов
/ 31 января 2011

У меня есть страница 'ask_a_question' с функцией onbeforeunload, чтобы предупредить пользователя перед тем, как оставить что-то несохраненным (эй! Как SO: P). Я тестирую его, используя огурец с капибарой и веб-драйвером, добавляя тег @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, в результате чего следующий тест.

Поскольку моя функция не закрывает и не покидает страницу как таковую. Я не думаю, что было бы хорошей идеей добавить что-то, чтобы принять предупреждение. Но, честно говоря, я совсем растерялся.

Как я могу сказать capybara использовать новое окно браузера для каждого теста @javascript или автоматически закрывать предупреждение onbeforeunload?

Thanx

Ответы [ 2 ]

5 голосов
/ 12 апреля 2011

вы можете использовать page.driver.browser.switch_to.alert.dismiss ( документы здесь ), чтобы избавиться от предупреждения.

Вы можете положить это в огурец после крючка

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
1 голос
/ 06 мая 2015

Аналогичный ответ для всех, кто использует 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
...