what tutorial rails rspec capybara

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.

  1. 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

  2. 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.