2013-03-23 7 views
8

Sto usando rspec per testare alcune pagine e vorrei usare il metodo click. Tuttavia il DOM non ha il link o il pulsante. è solo una spanna e magicamente diventa un collegamento con javascript.rspec click span

<span class="footerLink feedbackLink"> 
    Feedback 
</span> 

rspec offre "click_link" e "click_button"

tutte le idee come potrei fare clic su un arco?

+0

Quando si dice "magicamente diventa un collegamento" si intende che si allega un gestore onclick con Javascript o si modifica il tipo di elemento in modo che sia un'ancora da uno span dopo l'esecuzione di alcuni codici JavaScript? –

+0

Sì, mi dispiace per l'utilizzo "magicamente". onclick è anche collegato. Francamente penso che sarebbe stato più semplice avere un collegamento lì, ma questo è il design attuale –

+0

Possibile duplicato: [Cucumber e Capybara, facendo clic su un elemento non collegato o pulsante] (http://stackoverflow.com/q/3585533/ 841064) –

risposta

11

Si dovrebbe essere in grado di fare

find('.feedbackLink').click 

find restituisce un elemento, e la classe elemento ha un metodo #click.

Poiché probabilmente stai gestendo il clic in Javascript, non dimenticare di aggiungere :js => true come metatag per il test.

+0

Grazie mille per la risposta: ho aggiunto specificare "invia feedback", js: true do and find ('. FeedbackLink'). Ma apre Firefox. c'è un modo per saltarlo ed eseguirlo come qualsiasi altro test in rspec? –

+0

@SarahA sfortunatamente, se dipende da Javascript, deve essere eseguito in un browser. La buona notizia è che il browser non deve essere Firefox - [Poltergeist] (https://github.com/jonleighton/poltergeist) è una tra le diverse opzioni headless. –

+1

Sì, puoi ignorare le specifiche js: 'rspec --tags ~ js' E Capybara (il backend tester di RSpec) può utilizzare https://github.com/thoughtbot/capybara-webkit cos'è una versione headless di WebKit motore di rendering. –