2013-02-25 12 views
8

Potrzebuję uzyskać wartość ukrytego elementu.Jak uzyskać wartość ukrytego elementu w kapibarze?

Próbowałem następujący kod:

page.find(:xpath, "//span[@id='sample']").text 

zwraca nil.

+0

Proszę pokazać HTML strony. –

+0

@JustinKo Dokładne poznanie całego HTML nie jest konieczne –

+0

@AndreyBotalov, chciałem tylko potwierdzić, czy patrzymy na rozpiętość, która nie jest widoczna, czy element wejściowy typu "ukryty". W innych kwestiach pojawiały się niejasności. –

Odpowiedz

20

Od wersji Capybara 2.1 można przekazywać :all do text i używać find('#sample').text(:all) niezależnie od sterownika.

Również można użyć :text opcji dopasowujących (będą wewnętrznie przechodzą :all do text jeśli :visible jest false):

page.should have_css('#sample', visible: false, text: 'expected text') 

w starszych Kapibara 2.0.x text nie ma takiej opcji i zwrócił tylko widoczny tekst.

Aby powrócić zarówno widoczne i niewidoczne tekstu można użyć w:

  • selen:
page.evaluate_script("document.getElementById('sample').textContent") 
  • rack_test:
find('#sample').native.text 
+0

Dokumenty: http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Finders –

+0

To nie działa dla najnowszej Capybary – Dean

+0

@Dean Myślę, że to powinno działać. Właśnie założyłem, że OP chce uzyskać tekst, a nie wartość. –

15

Można po prostu odnaleźć ukryty element i zdobądź jego wartość.

find('#sample', visible: false).value 

Tak proste;)

Powiązane problemy