Capybara switch_to.alert (диалоговое окно) прерывистый сбой - PullRequest
4 голосов
/ 29 сентября 2011

Я пытаюсь взаимодействовать с диалоговым окном в FF, используя RSPEC / Capybara.

Нашли элегантное решение в: Как проверить диалог подтверждения с огурцом?

page.driver.browser.switch_to.alert.accept

Однако мы получаем периодические сбои, когда переключение не происходит.

Кто-нибудь сталкивался с этим? В любом случае, чтобы убедиться, что переключение всегда успешно?

Спасибо!

1 Ответ

0 голосов
/ 26 мая 2013

Как указано в ответе, браузер перестает отвечать на запросы при открытии модальных диалоговых окон Alert / Confirm / Prompt. В настоящее время, хотя браузеры научились показывать немодальные окна, Capybara по-прежнему не может оценить какой-либо код в контексте страницы.

Как указано в связанном ответе, просто заглушите метод window.confirm. Это лучший стабильный способ.

Вы можете написать следующие два шага в Капибаре:

When /I ensure the confirm box returns OK/ do
  page.evaluate_script('window.confirm = function() { return true; }')
end

When /I ensure the confirm box returns Cancel/ do
  page.evaluate_script('window.confirm = function() { return false; }')
end

Затем вы можете перейти к переписыванию шагов Capybara, чтобы сначала убедиться, что вы оцепили поле подтверждения, и , а затем нажмите на ссылку, которая вызывает окно подтверждения:

When I ensure the confirm box returns OK
And I click on Remove
Then ...
...