tutorial - Rspec+Capybara: Cómo hacer clic en el cuadro de alerta
rspec rails (6)
Aquí se actualizó la respuesta, ya que las opciones anteriores parecen haber quedado en desuso.
Capybara :: Session # accept_alert parece ser la mejor manera de lograr esto ahora, donde la acción que activará la alerta se debe pasar en un bloque. http://www.rubydoc.info/github/jnicklas/capybara/Capybara/Session:accept_alert
p.ej:
page.accept_alert ''Alert text here'' do
click_button(''Search'')
end
He pasado por la publicación de capibara + clic en el cuadro de alerta pero nada parece funcionar. Siguiente es mi escenario:
Escenario : cuando hago clic en el botón Actualizar, aparece un cuadro de alerta que contiene el botón "Aceptar" y "Cancelar". Haga clic en "Ok" y aparecerá un nuevo formulario.
Estoy escribiendo especificaciones de solicitud, es decir, usando rspec y capybara. El problema principal es hacer clic en el cuadro de alerta: El siguiente es mi código:
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
Pero la ejecución del script me da el siguiente error:
Fallo / Error: page.evaluate_script (''data-confirm = function () {return true;}'') Selenium :: WebDriver :: Error :: UnexpectedJavascriptError: asignación no válida lado izquierdo # ./spec/requests/user_upgrades_spec.rb : 30
Para el segundo ejemplo, es decir
page.driver.browser.switch_to.alert.accept
Mi código :
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
Me sale un error:
Fallo / Error: page.driver.browser.switch_to.alert.accept Selenium :: WebDriver :: Error :: UnhandledError:
Por favor, hágame saber cómo proceder más
Para WebKit:
page.accept_confirm { click_button "Upgrade" }
Para el selenio:
page.driver.browser.switch_to.alert.accept
Pruebe esta línea si desea hacer clic en el botón Aceptar del cuadro de alerta:
page.evaluate_script(''window.confirm = function() { return true; }'')
No olvide marcar su prueba con la bandera de javascript
it "update user to trainer", js: true do
...
end
y habilite Capybara.javascript_driver con: webkit o: selenio en su archivo spec_helper
Puede hacer clic en un cuadro de alerta como este:
page.driver.browser.switch_to.alert.accept
Sé que esto es viejo, pero ahora también funciona en poltergeist:
page.accept_alert
page.accept_alert
trabajado para mí usando Selenio. Otros controladores probablemente tendrán su propia sintaxis.
Como mencionó Jillian Foley, parece que otras respuestas han quedado en desuso.