Gegeben eine einfache Seite:
%Vor%Wenn ich irgendetwas in ein Textfeld eingabe, das keine E-Mail ist und auf die Schaltfläche klicke, erscheint die Meldung %code% .
Gibt es eine Möglichkeit zu überprüfen, ob die Nachricht mit Selenium oder Watir erscheint? Soweit ich sehe, erscheint nichts neues im Browser DOM.
Da die Seite eine E-Mail verwendet, überprüfen Sie, ob diese Funktion in einem Browser integriert ist. Ist es sogar sinnvoll, diese Fehlermeldung zu überprüfen? Es ist auf der gleichen Ebene wie zu prüfen, ob die Browser-Bildlaufleiste funktioniert. Wir überprüfen nicht mehr die Webanwendung, sondern die Plattform (den Browser).
Eine frühere verwandte Frage zu SO ist: Wie teste ich Fehlerbedingungen in HTML5-Seiten mit Gurke?
Ich stimme zu, dass dies dem "Testen des Browsers" näher kommt. Wenn Ihr Code von dieser Browserfunktion abhängt, muss die Website den richtigen HTML-Code (5) erstellen, damit der Browser Sie kennt möchte diese Ebene der Validierung, und das können Sie überprüfen.
Einige gute Hintergrundinformationen hierzu finden Sie unter art of the web
Die browserseitige Validierung wird durch die Kombination des spezifischen Eingabetyps (den Sie über die %code% -Methode von watir überprüfen konnten) und des neuen %code% -Attributs ausgelöst (was vielleicht ein Trick ist). Angesichts dessen denke ich, dass ich tatsächlich Hier sehen Sie einen guten Grund für ein neues Feature in Watir. Ich denke, wir könnten eine %code% -Methode verwenden, die für alle Eingabeelemente unterstützt werden sollte, die das neue 'required'-Attribut unterstützen, und würde true zurückgeben, wenn das Attribut' required 'vorhanden ist.
Sie können also im Moment wissen, dass Sie einen HTML5-Browser verwenden, der diese Funktion unterstützt. Sie könnten also prüfen, ob der Eingabetyp "E-Mail" ist und dass das Attribut "required" vorhanden ist. (Ich habe keine Ahnung, wie das geht, aber vielleicht kann jemand anders einen Weg vorschlagen).
Die andere Sache, um sicher zu sein, würde sein, einen ungültigen Wert zur Verfügung zu stellen, und stellen Sie sicher, dass das Formular sich nicht erlaubt, vorgelegt zu werden. z.B. ist die Validierung durchgesetzt, oder nur beratend. (Und vergessen Sie nicht, die Server-Seite zu überprüfen, indem Sie mit curl oder httparty trotzdem ungültige Daten senden, da ein feindseliger Benutzer leicht jede inbrowser-Validierung umgehen und dieses Formular mit gefälschten oder sogar 'feindlichen' Werten übergeben könnte, die einen Puffer verursachen Overflow oder Injection-Attacke. Keine Site sollte ausschließlich von der Client-seitigen Validierung abhängen.)
Die andere Sache, die es zu beachten gilt, ist die Frage, ob der Benutzer sich in einem Browser befindet, der diese spezielle Validierungsfunktion NICHT unterstützt. Was macht die Seite dann? Ich würde eine Art von clientseitigem Javascript und eine Nachricht annehmen, die angezeigt wird.
In diesem Fall hängt es wirklich von der Art ab, in der die Nachricht erscheint. In der App, die ich gerade teste, befinden sich Nachrichten dieser Art in handlichen divs mit eindeutigen Klassen, die von css gesteuert werden, um normalerweise ausgeblendet zu werden, und werden dann angezeigt, wenn die Clientseite JS die Notwendigkeit erkennt, eine Nachricht für die Nachricht anzuzeigen Benutzer. Natürlich habe ich Tests für solche Sachen. Hier ist ein Beispiel für jemanden, der unseren allgemeinen Geschäftsbedingungen zustimmt. (Hinweis: Wir verwenden Cucumber und das Juwel der Test-Factory, um Seitenobjekte und Datenobjekte zu erstellen)
Beginnen wir mit der Nachricht, und was für ein Rechtsklick.examine-Element zeigt
Das Szenario in der Datei %code% sieht folgendermaßen aus
%Vor%Die kritischen Gurkenschritte sind:
%Vor%Die relevanten Teile des %code% Seitenobjekts sind
%Vor%Liefert das ein Beispiel?
Hinweis: Es könnte leicht argumentiert werden, dass die zweite Validierung (auf der Seite bleiben) redundant ist, da ich die Nachricht wahrscheinlich nicht sehen werde, wenn ich nicht immer noch auf der Seite bin. Aber es fügt Klarheit zu der erwarteten Benutzererfahrung hinzu, die im Szenario beschrieben wird. Es könnte auch sehr wichtig sein, wenn die Implementierung wo zu ändern, zum Beispiel, wenn es entschieden wurde, etwas wie eine Javascript-Warnung zu verwenden, dann kann es wichtig sein, das zu validieren Einmal entlassen (etwas, was der Schritt "Ich sehe die Nachricht" wahrscheinlich tun würde), ging der Benutzer trotzdem nicht auf die Seite.
Ich habe keine Möglichkeit gefunden, nach der tatsächlichen Fehlermeldung zu suchen. Sie können jedoch überprüfen, ob das Eingabefeld nach Eingabe einer Nicht-E-Mail ungültig ist, indem Sie den Pseudo-Selektor %code% CSS verwenden.
%Vor%Du könntest es so versuchen
%Vor%Ausgabe für die obige Zeile ist
%Vor%Also können Sie daraus schließen, ob der angegebene Wert gültig ist oder nicht.
Im Folgenden wird die javascript-Logik basierend auf der Gültigkeit des Feldes
auf wahr / falsch zurückführen %Vor%Ps .: Ich nehme an, Input-Tag hat ID "a"