Estoy usando Rspec y Carpincho.
¿Cómo puedo escribir un paso para verificar un checkbox
? Lo he intentado check
por valor pero no puede encontrar mi checkbox
. No estoy seguro de qué hacer, ya que de hecho tengo la misma 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">
Respuestas:
Encontré que lo siguiente funcionó para mí:
fuente
find(:css, "#cityID[value='62']").set(true)
funcionará perofind(:css, "#cityID[][value='62']").set(true)
no se encontrará y fallará. ¿Cómo ejecuto la misma función con un ID de soporte vacío?find(:xpath, ".//input[@id='Extrapainful[]'][@value='12345']").set(true)
Es mejor no crear múltiples elementos con la misma identificación , de modo que (y no solo para eso) pueda marcar / desmarcar fácilmente una casilla de verificación con elegante
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
Puede encontrar más información sobre manipulaciones de entrada de carpincho aquí
fuente
Cuando ejecutas la prueba de carpincho, obtienes el
page
objeto. Esto puede usar para marcar / desmarcar las casillas de verificación. Como @buruzaemon ya mencionó:Así que supongamos que tienes una casilla de verificación en tu html como:
Puede verificar esto con:
Desmarcar es el mismo, solo use el
page.uncheck
método.fuente
check
se implementa el método en Carpincho.def check(locator, options={}) find(:checkbox, locator, options).set(true) end
Creo que puede que tenga que dar
id
s únicos a sus elementos de formulario , en primer lugar, .Pero con respecto a Capybara y las casillas de verificación, el método de instancia de verificación Capybara :: Node :: Actions # le permitirá encontrar y marcar una casilla de verificación por nombre, id o texto de etiqueta.
fuente
Si el cuadro está asociado con el texto, por ejemplo, 'Opción 3', a partir de entonces,
capybara 3.0.3
simplemente puedefuente
Sé que esta es una pregunta anterior, pero he estado trabajando en esto yo mismo, y después de haber intentado todo lo anterior, esto es lo que finalmente funcionó para mí:
Espero que esto sea útil para alguien. Estoy usando Capybara 2.4.4.
fuente
Un viejo tema pero otra solución es:
check('Option 3', allow_label_click: true)
fuente
también puede usar: xpath en lugar de: css si tiene problemas para encontrarlo.
en Chrome (y seguramente en otros navegadores), puede "inspeccionar el elemento" y luego al hacer clic derecho en el elemento que le interesa, hay 'copiar xpath' si no sabe qué era xpath, ahora lo sabe.
fuente
También puede verificar que todas las casillas de verificación no estén marcadas con este ejemplo.
all ('input [type = checkbox]'). each do | checkbox | checkbox.should_not be_checked end
fuente
.set (true) no funcionó para mí, así que tuve que llamar a .click:
find(...).click
fuente
click
sea un comando de capibara válido (o al menos si lo está, no parece estar en los documentos), y (2) si lo fuera, probablemente activaría la casilla de verificación, no asegurarse de que estaba encendido o apagadoTuve algunos problemas con la casilla de verificación personalizada que está oculta detrás del elemento de etiqueta. Necesitaba un
allow_label_click: true
.Con referencia a esta publicación de blog ,
fuente
Creo que esto hará que el capibara espere a cualquier escucha de eventos adjunto a esa entrada, que a veces es un fastidio si no espera ... Si esa entrada no tiene una ID, elija otra propiedad (debe haber uno) ...
fuente
para seleccionar la casilla de verificación
fuente