Ich verwende RSpec2 und Capybara für Abnahmetests.
Ich möchte behaupten, dass der Link in Capybara deaktiviert ist oder nicht. Wie kann ich das machen?
ruby-on-rails
rspec
capybara
Kriysna
quelle
quelle
Eine andere einfache Lösung besteht darin, auf das gesuchte HTML-Attribut zuzugreifen
[]
:Beachten Sie, dass
Capybara
automatisch versucht wird, auf den Abschluss asynchroner Anforderungen zu warten. In einigen Fällen funktioniert dies jedoch möglicherweise nicht:Hier ist eine Problemumgehung, wenn Sie Probleme mit Zusicherungen für Elemente haben, die asynchron aktualisiert werden:
quelle
find('a#my_element[href]')
Wäre es möglich, den Wert dieses Attributs abzurufen? Versuchen mit Ausdrücken wiefind('a#my_element[href]').value
, scheint aber nicht zu funktionieren :(find('a#my_element[href]').text
oderfind('a#my_element[href]').native
. Lassen Sie mich wissen, ob einer von beiden die erwarteten Ergebnisse liefert.Es war ein bisschen chaotisch, den richtigen xpath herauszufinden, hier ist der richtige
mit capybara 0.4.1.1
Wenn Sie nur einen Link ohne Klasse haben, verwenden Sie
So etwas wird leider nicht funktionieren:
Die Klassenoption wird ignoriert.
quelle
Ich empfehle die Verwendung von
have_link
undfind_link(name)[:disabled]
in zwei getrennten Aussagen. Während das Ausführen der zweiten Behauptung allein einfacher ist, sehen Fehlermeldungen über fehlende Links dadurch besser aus und Ihre Testergebnisse sind leichter zu lesen.Beachten Sie, dass
"Example"
dies in den Namen oder die ID des Links geändert werden kann.quelle
have_link erwartet einen Hash von Optionen, der leer ist, wenn Sie keine angeben. Sie können alle Attribute angeben, die der Link haben soll - stellen Sie einfach sicher, dass Sie alle Optionen in EINEM Hash übergeben.
Hoffe das hilft
PS: Für Attribute wie die Datenmethode müssen Sie den Attributnamen als Zeichenfolge übergeben, da der Bindestrich das Symbol durchbricht.
quelle
class:
ist nicht gültigWann immer möglich, sollten Sie versuchen, die von Capybara bereitgestellten Wrapper zu verwenden, die für alle Treiber gleichmäßiger funktionieren.
Für den speziellen Fall von
disabled
wurde in 2.1 ein Wrapper eingeführt: https://github.com/jnicklas/capybara/blob/fc56557a5463b9d944207f2efa401faa5b49d9ef/History.md#version-210Wenn Sie es verwenden, erhalten Sie sowohl bei RackTest als auch bei Poltergeist sinnvolle Ergebnisse:
HTML:
Tests:
Beachten Sie, dass bei Verwendung dieser Option anstelle von CSS-Selektoren die Javascript-Tests ohne Änderungen funktionieren, wenn Sie einen Js-fähigen Treiber verwenden.
Ausführbare Testdatei hier .
quelle
Bowsersenior , danke für einen Hinweis
Hier ist ein Beispiel:
quelle
Mit der Syntax von Rspec3 habe ich es so gemacht:
quelle
Sie können einfach die
page.has_css?
Methode verwendenDies wird zurückgegeben,
true
wenn ein Element vorhanden ist.Führen Sie eine Aktion basierend auf der Validierung aus.
quelle
Gemäß den Dokumenten können Sie die Accessorsyntax [attribute] verwenden:
Für Behinderte können Sie auch Folgendes tun:
quelle