rails rack_test feature example ruby-on-rails ruby testing rspec capybara

ruby-on-rails - rack_test - ruby on rails selenium



¿Cómo marcar una casilla de verificación en capibara? (9)

.set (true) no funcionó para mí, así que tuve que llamar .click:

find(...).click

Estoy usando Rspec y Capybara.

¿Cómo puedo escribir un paso para marcar una checkbox ? He intentado check por valor pero no puede encontrar mi checkbox . No estoy seguro de qué hacer, ya que de hecho tengo el mismo ID con diferentes valores

Aquí está el código:

<input id="cityID" type="checkbox" style="text-align: center; opacity: 0;" value="61" name="cityID"> <input id="cityID" type="checkbox" style="text-align: center; opacity: 0;" value="62" name="cityID"> <input id="cityID" type="checkbox" style="text-align: center; opacity: 0;" value="63" name="cityID">


Al ejecutar la prueba de capibara, obtuviste el objeto de la page . Esto puede usar para marcar / desmarcar cualquier casilla de verificación. Como @buruzaemon ya mencioné:

para buscar y marcar una casilla de verificación por nombre, id o texto de etiqueta.

Así que supongamos que tienes una casilla de verificación en tu html como:

<label> <input type="checkbox" value="myvalue" name="myname" id="myid"> MyLabel </label>

Puede verificar esto con:

page.check(''myid'') page.check(''MyLabel'') page.check(''myname'')

Desmarcar es lo mismo que usar el método page.uncheck .



Encontré que lo siguiente funcionó para mí:

# Check find(:css, "#cityID[value=''62'']").set(true) # Uncheck find(:css, "#cityID[value=''62'']").set(false)


Es mejor no crear múltiples elementos con el mismo ID , para que (y no solo para eso) pueda marcar / desmarcar fácilmente una casilla de verificación con elegante

check ''cityID'' uncheck ''cityID''

Si uno no puede evitar múltiples elementos con la misma identificación y aún necesita marcar una casilla de verificación con cierto valor , puede hacerlo con

find(:css, "#cityID[value=''62'']").set(true) find(:css, "#cityID[value=''62'']").set(false)

Más información sobre las manipulaciones de entrada de capibara se puede encontrar here


Sé que esta es una pregunta anterior, pero he estado trabajando en esto yo mismo, y habiendo probado todo lo anterior, esto es lo que finalmente funcionó para mí:

find("input[type=''checkbox''][value=''#{cityID.id}'']").set(true)

Espero que esto sea útil para alguien. Estoy usando Capybara 2.4.4.


También puede verificar que todas las casillas de verificación no estén marcadas con este ejemplo.

all (''input [type = checkbox]''). cada casilla de verificación | hacer | checkbox.should_not be_checked end


también puede usar: xpath en lugar de: css si tiene problemas para encontrarlo.

find (: xpath, ''//*[@id="example"]'').set(true)

en Chrome (y seguramente en otros navegadores), puede "inspeccionar el elemento" y luego al hacer clic con el botón derecho en el elemento que le interesa, aparece ''copy xpath'' si no sabe qué era xpath, ahora lo hace.


check find(".whenever input")[:id]

Creo que esto hará que el capibara espere a que cualquier oyente de eventos se adjunte a esa entrada, que a veces es un dolor en el culo si no espera ... Si esa entrada no tiene una ID, elija otra propiedad (debe haber uno) ...