2012-12-12 12 views
9

Provare a fare in modo che questo test fallisca senza successo.Capibara: come controllare il valore TEXT di un elemento con xpath e css?

Ho questo HTML:

<div id="navigation"> 
<ul> 
    <li> 
    <a href="/url">TV</a> 

E poi stavo cercando di identificare il testo Un elemento e far fallire per ora.

Ho usato tutte le seguenti espressioni con XPath ma tutti continuano a passarsi anche se sto usando un testo diverso per il confronto: S

page.should have_xpath("//div[@id='navigation']//a", :content => 'Radio') 
page.should have_xpath("//div[@id='navigation']//a", :text => 'Radio') 
page.should have_xpath("//div[@id='navigation']//a[contains(string(),'Radio')]") 
page.should have_xpath("//div[@id='navigation']//a[contains(text(),'Radio')]") 
page.should have_xpath("//div[@id='navigation']//a[contains(.,'Radio')]") 

Qualsiasi idea di come ho potuto identificare il testo della un elemento HTML specifico con capibara? e ... è possibile ottenere lo stesso con i CSS?

Cheers!

risposta

9

Si è scoperto che c'era un altro elemento con il testo "Radio" nel DIV di "spostamento", quindi il test ha avuto esito negativo.

Per riferimento futuro, identificando il primo elemento esplicitamente comportati come previsto e non supera la prova:

page.first('div#navigation a').text.should == 'Radio') 
page.first('div#navigation a').text.should eq('Radio') 
page.first('div#navigation a').text.should match('Radio') 
page.first('div#navigation a').text.should be('Radio') 
0

che ti aiuto:

page.should have_css ('div # navigazione a',: il testo == 'Radio')

provare questo.

+2

Penso che ci sia un errore di battitura. ': text == 'Radio'' dovrebbe essere': text =>' Radio'' – Eva

8

Come di RSpec 2.11 (luglio 2012), il modo migliore è quello di utilizzare il expect sintassi:

expect(page).to have_css("#navigation a", text: "Radio") 

Puoi configure RSpec di accettare solo che questa nuova sintassi per mantenere il vostro codice di base coerente.

+2

Sto leggendo questo nel 2016, però ... – eltiare

+4

Haha, eccezione non gestita. Fisso! –

0

Mettendo questo qui così posso trovarlo la prossima volta che mi imbatto in questo. : P

mio html si presenta così:

<a href="https://foo.com" id="foo-link">@foo</a> 

Voglio trovare il valore del testo e l'URL e affermare che siano corrette. Utilizzando Capybary 2.16, Rails 5.1 e Minitest ecco come ho fatto:

assert_selector 'a#foo-link[href="https://foo.com"]', text: '@foo' 

Se l'ID, testo o il valore href cambiano il test avrà esito negativo.

Problemi correlati