Estoy tratando de seleccionar un elemento de un menú desplegable usando Carpincho (2.1.0).
Quiero seleccionar por número (es decir, seleccionar la segunda opción, la tercera, etc.).
Busqué en Google como un loco intentando todo tipo de cosas pero sin suerte.
Pude seleccionarlo usando el valor:
find("option[value='4c430d62-f1ba-474f-8e8a-4452c55ea0a8']").click
Pero no quiero usar ese método porque el valor es algo que cambiará y hará que mi prueba sea frágil.
El HTML para el menú desplegable es:
<td class="value">
<select name="organizationSelect" id="organizationSelect" class="required">
<option value="NULL">Choose...</option>
<option value="4c430d62-f1ba-474f-8e8a-4452c55ea0a8"> Institution1</option>
<option value="e1a4efa7-352d-410a-957e-35c8a3b92944"> Institution / test</option>
</select>
</td>
También probé esto:
option = find(:xpath, "//*[@id='organizationSelect']/option[2]").text
select(option, :from => organizationSelect)
Pero resulta en este error:
Ambiguous match, found 2 elements matching option "Institution" (Capybara::Ambiguous)
Entonces, ¿cómo puedo seleccionar la primera, segunda, tercera, etc. opción del menú desplegable (usando Capybara)?
fuente
select('option_name', from: 'select_box')
. Donde pueden estar los valores: id, nombre, elemento de etiqueta relacionado. Puede leer más sobre las opciones de capibara y DSL aquí .Por alguna razón no me funcionó. Entonces tuve que usar algo más.
trabajó para mi.
fuente
form
, esfrom
. Aquí está la documentación sobre selectotra opción es agregar un método como este
fuente
find("select[name='organization_search[role]']").find(:option, text: :Staff).select_option
find(:css, "#search_field").find(:option, "Opp Last Name").select_option
, que es el texto de la opción que se muestra, funcionó para mí, mientras que el valor de la opción no.Desafortunadamente, la respuesta más popular no me funcionó por completo. Tuve que agregar
.select_option
al final de la declaraciónselect("option_name_here", from: "organizationSelect").select_option
sin el
select_option
, no se realizaba ninguna selecciónfuente
.select_option
, ya que elselect
método devuelve un valor booleano?Para agregar otra respuesta a la pila (porque aparentemente hay muchas formas de hacerlo dependiendo de su configuración): lo hice seleccionando el
option
elemento literal y haciendo clic en élNo es muy bonito, pero funciona: /
fuente
ninguna de las respuestas me funcionó en 2017 con capibara 2.7. Obtuve "ArgumentError: número incorrecto de argumentos (dado 2, esperado 0)"
Pero esto hizo:
fuente
No es una respuesta directa, pero puede (si su servidor lo permite):
1) Cree un modelo para su organización; extra: será más fácil llenar tu HTML.
2) Cree una fábrica (FactoryGirl) para su modelo;
3) Crear una lista (create_list) con la fábrica;
4) 'escoger' (muestra) una Organización de la lista con:
fuente
Aquí está la forma más concisa que he encontrado (usando capibara 3.3.0 y controlador de cromo):
seleccionará la segunda opción. Incremente el índice según sea necesario.
fuente
En Carpincho solo puedes usar find con xpath
y haga clic en el método
fuente