Ответ 1
Вы можете щелкнуть мышью на окне предупреждения следующим образом:
page.driver.browser.switch_to.alert.accept
Я прошел через почту capybara + щелчок на окне предупреждения, но ничего не работает. Ниже приведен мой сценарий:
Сценарий. Когда я нажимаю кнопку обновления, появляется окно предупреждения, содержащее кнопки "ОК" и "Отмена". Нажмите "ОК", затем появится новая форма.
Я пишу спецификации запросов, то есть используя rspec и capybara. Основная проблема заключается в том, чтобы нажать на поле предупреждения: следующий мой код:
context "update" do
before(:all) do
Capybara.current_driver = :selenium
end
after(:all) do
Capybara.use_default_driver
end
it "update user to trainer" do
click_button('Search')
sleep 3
page.evaluate_script('data-confirm = function() { return true; }')
page.click('OK')
click_button('Upgrade')
end
end
Но выполнение script приводит к следующей ошибке:
Ошибка/Ошибка: page.evaluate_script ('data-confirm = function() {return true;}') Selenium:: WebDriver:: Ошибка:: UnexpectedJavascriptError: неверное назначение левой стороны #./spec/requests/user_upgrades_spec.rb: 30
Для второго примера i.e.
page.driver.browser.switch_to.alert.accept
Мой код:
context "update" do
before(:all) do
Capybara.current_driver = :selenium
end
after(:all) do
Capybara.use_default_driver
end
it "update user to trainer" do
click_button('Search')
sleep 3
click_button('Upgrade')
page.driver.browser.switch_to.alert.accept
end
end
Я получаю ошибку:
Ошибка/Ошибка: page.driver.browser.switch_to.alert.accept Selenium:: WebDriver:: Ошибка:: UnhandledError:
Пожалуйста, дайте мне знать, как продолжить дальше
Вы можете щелкнуть мышью на окне предупреждения следующим образом:
page.driver.browser.switch_to.alert.accept
Обновленный ответ здесь, так как вышеприведенные параметры, похоже, были устаревшими.
Capybara:: Session # accept_alert, кажется, лучший способ выполнить это сейчас, когда действие, которое выдает предупреждение, должно быть передано в блоке. http://www.rubydoc.info/github/jnicklas/capybara/Capybara/Session:accept_alert
например:.
page.accept_alert 'Alert text here' do
click_button('Search')
end
Попробуйте эту строку, если вы хотите нажать кнопку ok в окне предупреждения:
page.evaluate_script('window.confirm = function() { return true; }')
Не забудьте отметить свой тест флагом javascript
it "update user to trainer", js: true do
...
end
и включите Capybara.javascript_driver с помощью: webkit или: selenium в вашем файле spec_helper
page.accept_alert
работал у меня, используя Selenium. У других драйверов, вероятно, будет свой собственный синтаксис.
Как упоминала Джиллиан Фоли, кажется, что другие ответы устарели.
Для WebKit:
page.accept_confirm { click_button "Upgrade" }
Для селена:
page.driver.browser.switch_to.alert.accept
Я знаю, что это уже давно, но теперь это работает и в полтергейсте:
page.accept_alert