È possibile interagire con gli elementi nascosti con il capibara?
Ho un campo di tipo file che ha opacity: 0
e sovrapposizione di un falso pulsante. Il suo comune css tecnica per falso in una sorta di “pulsante ” Carica” che visualizza in modo coerente nei diversi browser.
Capibara non mi permette di chiamare attach_file
su tale input. L’errore è Selenium::WebDriver::Error::ElementNotVisibleError: Element is not currently visible and so may not be interacted with
.
Qualcuno sa un modo per forzare il capibara per interagire con gli elementi invisibili?
La risposta è ancora senza risposta, ma ho trovato un lavoro in giro. Niente di intelligente, solo rendere visibile l’elemento con un semplice script
page.execute_script %Q{
$('#photos').css({opacity: 1, transform: 'none'});
}
I post per il record.
- Può essere difficile da fare. Provate a cominciare da JS qui. Ma potrebbe non funzionare in tutti i casi e browser
- Sembra come se non si utilizza il capibara-webkit (perché di “Selenio::WebDriver::Errore” nel messaggio di errore), quindi ho rimosso il capibara-webkit tag tua domanda
- Potrebbe essere già risposto qui: stackoverflow.com/a/10805128/914986
- Il lavoro tutto funziona bene! Grazie
È possibile interagire con gli elementi nascosti utilizzando il
visible: false
proprietà in Capibara.Se si desidera fare clic su elemento nascosto utilizzare:
Non utilizzare
click_button('#photo')
direttamentefind("#photos", visible: false)
, la corrispondenza di visibile #foto, troppo. Se si desidera abbinare elementi invisibili solo, è necessariofind("#photos", visible: :hidden)
come descritto da Thomas Walpole qui stackoverflow.com/questions/53361214/…L’autore di Capybara consiglia di impostare
Capibara.ignore_hidden_elements
immediatamente prima bisogno di vedere l’invisibile elemento, e ripristinarlo in seguito:In generale l’interazione con elementi non visibili non dovrebbe essere possibile quando si utilizza il Capibara (si possono trovare utilizzando il
visible: false/hidden
opzione nella maggior parte dei cercatori, ma in realtà non fare nulla per loro). Tuttavia, il file di input è un caso speciale perché di quanto è comune per nascondere l’elemento e, a causa di restrizioni di sicurezza, nessun altro modo per aggiungere un file di interagire con le pagine visibili elementi. A causa di questoattach_file
ha unmake_visible
opzione che può essere utilizzato per avere il Capibara rendere l’elemento visibile, allegare il file, e poi il reset CSS per l’impostazione originale.Miquel, grazie per workaraund.
Ho problema simile per interagire con i file nascosto ingresso su C# vincolante per il Selenio Webdriver 2.35 e Firefox 24. Per effettuare la selezione di file di lavoro fatto simile trucco:
Ho finito per risolvere in un altro percorso.
execute_script()
è stato mi dà un momento difficile (sarebbe congelare l’esecuzione di test di FireFox), quindi questo è quello che ho fatto:Ho già avuto un opportuno file javascript. Ho aggiunto i seguenti
Ho anche dovuto aggiungere
.erb
a mio file javascript per una corretta Guide di movimentazione asset.E nel mio file di prova, ero già
ENV["RAILS_ENV"] = "test"
In questo modo ho potuto modificare l’interfaccia utente per i test, e ancora mantenere il look and feel di produzione.
L’ho fatto in questo modo con gli elementi che ha lo stile CSS
display:none;
set:Se l’elemento nascosto nidificato in una visibile elemento (ad esempio un input nascosto all’interno di una targhetta visibile), è possibile fare clic sul padre, invece. Se si desidera trovare l’ingresso da parte di ID, è possibile attraversare il genitore in questo modo: