standardmäßig nur Capybara sichtbaren Elemente findet, also, wenn Sie einen der Treiber verwenden, die vollständig CSS (so ziemlich alles außer rack_test) verarbeitet dann nur tun,
assert_selector(:css, '#visu')
würde ausreichen, um nach einem sichtbaren Element zu suchen. Wenn Sie überprüfen möchten, dass ein Element speziell nicht sichtbar ist, würden Sie
assert_selector(:css, '#visu', visible: :hidden)
Deshalb testen tun müssen, dass ein Element verborgen war und dann wurde sichtbar, dass es
assert_selector(:css, '#visu', visible: :hidden)
click_button("Show/hide")
assert_selector(:css, '#visu')
Hinweis tun könnte mag eigentlich nicht sinnvoll sein zu prüfen, ob ein Element existiert aber nicht sichtbar ist, kann es sinnvoller sein, einfach zu prüfen, ob das Element nicht da ist (könnte versteckt sein, kann nicht existieren), da sich das Verhalten der Schaltfläche ändert Element (oder Rendering einer Vorlage) würde der Test nicht brechen (und die Änderung im Verhalten hätte die Benutzererfahrung nicht verändert). Dazu müssen Sie nur Wenn
refute_selector(:css, '#visu') # or assert_no_selector depending on preference
click_button('Show/hide')
assert_selector(:css, '#visu')
tun konnte, auf der anderen Seite Sie den rack_test-Treiber verwenden, verarbeitet sie nur ein Teilabschnitt von CSS/Attribute Sichtbarkeit zu bestimmen. In diesem Fall wird ein Element als nicht sichtbar betrachtet, wenn das Inline-Stilattribut des Elements display: none
/display:none
enthält oder wenn das Element über ein hidden
-Attribut verfügt (kein Klassenname von "Versteckt"). Wenn also das Element durch einen Klassennamen 'hide_me' versteckt wird, der display:none
in einer externen CSS-Datei anwendet, würde rack_test dieses Element nicht als versteckt betrachten. Stattdessen könnten Sie so etwas wie
assert_selector(:css, '#visu.hide_me')
und die vollständige Prüfung so etwas wie
assert_selector(:css, '#visu.hide_me')
click_button("Show/hide")
assert_selector(:css, '#visu:not(.hide_me)')
Hinweis wäre tun: die: CSS-Selektor-Typ Parameter weggelassen werden können, wenn Sie Capybara.default_selector nicht geändert haben. Zusätzlich werden Fehlermeldungen viel aussagekräftiger unter Verwendung der assert_selector
Assertion als assert page.has_xxx?
assert_selector (: css, '#visu') findet es auch wenn es versteckt ist, also wie kann ich überprüfen, ob ich rack_test verwende? – Ayrad
@Ayrad las den Teil der Antwort beginnend mit "Wenn auf der anderen Seite" ist bereits beantwortet, einfach ersetzen 'hide_me' mit was auch immer Klassenname Elemente in Ihrer App versteckt - von Ihrem Beispiel ist es wahrscheinlich 'versteckt' –
ja, ich habe gelesen und wende den zweiten Teil assert_selector an (: css, '# visu.hidden') funktioniert perfekt, aber assert_selector (: css, '#visu: not (.hidden)') tut dies nicht, weil jquery das .hidden nicht aus dem Element I entfernt Angenommen – Ayrad