2013-05-13 7 views
5

Sto scrivendo alcuni test delle funzionalità utilizzando Capybara, per le pagine che prevedono molti aggiornamenti di javascript (l'URL rimarrà lo stesso quando un utente fa clic su "continua" pulsante, ma i contenuti nascosti verranno mostrati, e il contenuto mostrato sarà nascosto, in modo che ci sia una quantità enorme di testo/selettori/ecc in qualsiasi punto dato "sulla" pagina ma nascosto dall'utente).Impossibile inserire elementi nascosti in Capybara quando ignore_hidden_elements è true

Per provare questa funzionalità, voglio opzione ignore_hidden_elements configurazione di Capybara per essere vero, perché che meglio rappresenta l'esperienza dell'utente.

Ma ci sono anche alcuni plugin jQuery nella pagina che usano grafica di fantasia per riempire elementi HTML di base che sono nascosti, e vorrei usare Capybara per selezionare solo i valori corretti per quegli elementi, piuttosto che provare ad usare Javascript per simulare manualmente un utente che interagisce con l'elemento.

In particolare, sto cercando di testare Selezionare le caselle che sono impostati a display: none e sono riempiti da un plugin jQuery quando un utente interagisce con essi. Mi piacerebbe essere in grado di farlo:

select('value', from: 'select_box') 

ma la casella di selezione è nascosta.

Così ho provato questo:

select('value', from: 'select_box', visible: false) 

, ma che non ha funzionato neanche. Sono riluttante a trasformare ignore_hidden_elements in falso, perché questo simula in maniera più approssimativa un utente, e dovrei tornare indietro e aggiungere "visible: true" a molte linee di test.

Qualche idea su come procedere? C'è un'opzione che annulla in modo più preciso ignore_hidden_elements?

EDIT - Dopo la risposta di Andrey, ho girato ignore_hidden_elements false, e poi ha fatto lo stesso capibara selezionare test come prima:

select 'value', from: 'select_box_id' 

e, come per magia, ha funzionato. Quando ho di nuovo cambio ignore_hidden_elements alla vera e provare questa linea:

select 'value', from: 'select_box_id', visible: false 

ottengo questo errore:

Failure/Error: select 'value', from: 'select_box_id', visible: false 
    Capybara::ElementNotFound: 
     Unable to find select box "select_box_id" 

Qualche possibilità questa non è un bug? Dovrei segnalarlo?

+0

Se 'select ('valore', da: 'select_box', visible: false)' non funziona di 'select ('valore', da: 'select_box')' con 'Capybara.ignore_hidden_elements = false' non funzionerà anche. Se funziona, dovrebbe essere considerato un bug in Capybara. L'opzione 'ignore_hidden_elements' e' visible' influenzano lo stesso parametro –

+0

Quindi penso che questo sia un bug. Dettagli sopra. – Sasha

+0

Qual è la tua versione di Capybara? –

risposta

1

È un bug in Capybara 2.0.x. Here is a test case che è riproducibile in 2.0.x ma non in 2.1.

Ma Capybara-Webkit manutentori non hanno ancora rilasciato la versione compatibile con 2.1 Capybara.

Possibili soluzioni per voi:

  • uso Capybara 2.1-driver compatibile
  • utilizzare Capybara-Webkit dal ramo master su github
  • non provare a interagire con elementi invisibili (non funziona in selenio quindi credo che la possibilità di interazione dovrebbe essere considerata un bug in Capybara- Webkit)