Wie kann ich eine global zugängliche Variable in nightwatch.js erstellen? Ich benutze eine Variable, um eine angepasste URL zu speichern (abhängig davon, welcher Laden in unserem Online-Produkt geladen ist), aber ich muss es über mehrere Javascript-Funktionen zugänglich sein. Es scheint, dass der Wert davon zurückgesetzt wird, nachdem jede Funktion endet, obwohl sie außerhalb der Funktion am Anfang der Datei deklariert ist.
Es ist eine Weile her, dass Sie Ihre Frage und Unterstützung für das, was Sie angefordert haben, möglicherweise nicht (nativ) vorher verfügbar waren. Jetzt ist es.
Im Entwicklerhandbuch werden zwei Methoden bereitgestellt, um globale Variablen zu erstellen, auf die von einem beliebigen Test aus zugegriffen werden kann, abhängig von Ihren Anforderungen. Siehe hier zum Lesen.
Methode 1: Für wirklich globale Globals, also für alle Tests und alle Umgebungen. Definieren Sie ein Objekt oder übergeben Sie eine Datei im Abschnitt "globals_path" Ihrer Datei "nightwatch.json", d. H.
%Vor%Sie müssen die Variablen jedoch exportieren, daher ist das Auffrischen auf Node eine gute Idee. Hier ist ein einfaches Beispiel für die Datei globals.js:
%Vor%Dieses Objekt / diese Datei wird für alle Ihrer Tests verwendet, unabhängig von der Umgebung, es sei denn, Sie geben eine andere Datei / ein anderes Objekt an (siehe Methode 2).
Um auf die Variablen aus Ihrer Testsuite zuzugreifen, verwenden Sie die obligatorische Browser / Client-Variable, die an jede Funktion (Test) übergeben wurde, d. h .:
%Vor%Methode 2: Für globale globale Variablen, die sich abhängig von der von Ihnen angegebenen Umgebung ändern. Definieren Sie ein Objekt oder übergeben Sie eine Datei im Abschnitt "globals" Ihrer Datei "nightwatch.json", die in der von Ihnen benötigten Umgebung verschachtelt ist. Ie.
%Vor%Bitte beachten Sie, dass zum Zeitpunkt des Schreibens ein Fehler in der Nachtwache zu sehen ist und das Übergeben einer Datei mit Methode 2 nicht funktioniert (zumindest in meiner Umgebung). Weitere Informationen über diesen Fehler finden Sie hier .
Um auf Tricotes Antwort zu antworten, hat Nightwatch eine eingebaute Unterstützung dafür. Weitere Informationen finden Sie in der Dokumentation .
Sie können es entweder in der nightwatch.json
-Datei als "globals": {"myvar": "whatever"}
oder in einer globals.js
-Datei angeben, auf die Sie in nightwatch.json
mit "globals": "path/to/globals.js"
verweisen. Im letzteren Fall könnte globals.js
folgendes haben:
In beiden Fällen können Sie auf die Variable innerhalb Ihrer Tests zugreifen, wie in Tricote erwähnt:
%Vor%Ich werde wahrscheinlich dafür abgestimmt, aber eine andere Option, die ich erfolgreich zum Speichern und Abrufen von Objekten und Daten verwendet habe, ist eine Datei schreiben als Schlüsselwert-Paare zu einer vorhandenen Datei.
Damit kann ich am Ende eines Testlaufs alle zufällig erzeugten Daten sehen. Ich erstelle diese Datei in meinem ersten Testskript unter Verwendung aller Daten, die ich verwenden werde, um die verschiedenen Konten für den Test zu erstellen. Auf diese Weise kann ich, wenn ich viele Fehler sehe, einen Blick auf die Datei werfen und sehen, welche Daten verwendet wurden. Sagen Sie dann, melden Sie sich als dieser Benutzer an und gehen Sie manuell dorthin.
In benutzerdefinierten Befehlen habe ich eine Datei, die die folgende Funktion exportiert:
%Vor%In dieser Datei sind "Daten" Schlüsselwertpaare wie "Benutzername": "[email protected]". Infolgedessen kann ich diese Daten in späteren Skripts verwenden, wenn dies gewünscht wird.
Wenn das stimmt, werde ich GrayedFox's Antwort sofort untersuchen.
Allgemein ist es eine schlechte Übung, aber Sie können es als Feld von window
class zuweisen.
und window-Objekt ist global zugänglich
Tags und Links javascript nightwatch.js