2015-11-03 11 views
12

Ich benutze Nightwatch "0.8.6". Pro der Dokumentation auf den Seiten, ich habe eine pages/login.js-Datei und fügen Sie das Verzeichnis in der Konfigurationsdatei mit erstellt:Verwenden von Seiten Objekt in Nightwatch JS

module.exports = { 
    url: function() { 
    return this.launchUrl; 
    } 
}; 

Die Dokumentation erwähnt this.api, aber das ist nicht eine Eigenschaft des Client/Browser. this.launchUrl ist anscheinend jedoch verfügbar.

änderte ich einen bestehenden Test, es zu benutzen:

module.exports = { 
    'Login page has a login button' : function (browser) { 
    browser 
     .url(browser.page.login().url()) 
     .waitForElementVisible('body', 10000) 
     .assert.containsText('button', 'SIGN IN') 
     .end(); 
    } 
} 

Der Test schlägt fehl jetzt. .url versucht, Selen mit data:, anstelle des Werts von this.launchUrl zu öffnen, der Localhost: 3000 ist.

Das Seitenobjekt wird anscheinend im Zusammenhang mit dem Login-Test ausgewertet, daher sollte dies im Seitenobjekt this.launchUrl haben. Eintauchen in die Quelle, die ich dort sehe, sind auch Seitenwrapper-Objekte in der Mischung, irgendwie.

Wie kann ich ein Seitenobjekt in 0.8.6 korrekt erstellen und verwenden?

Antwort

6

Ich denke, Sie können versuchen, eine var hinzufügen, um die login.js Seite aufzurufen. wie folgt aus:

module.exports = { 
    'Login page has a login button' : function (browser) { 

    var LoginPage = browser.page.login(); 
     LoginPage.navigate(); 

     LoginPage 
     .waitForElementVisible('body', 10000) 
     .assert.containsText('button', 'SIGN IN') 
     .end(); 
    } 
} 
+0

Ich konnte nur zurück zu thi s. Nicht sicher, ob es dir eine Prämie zugesprochen hat, wenn nicht, lass es mich wissen und ich werde herausfinden, wie das geht –

1

So nach dem docs Sie müssen. - „Jede Seite Objekt in einer separaten Datei gespeichert werden soll, in einem bestimmten Ordner Nachtschwärmer die Seite Objekte aus dem Ordner liest (oder Ordner), die in der Konfigurationseigenschaft page_objects_path angegeben sind. "

Haben Sie Ihr Verzeichnis page_objects_path konfiguriert?

Sobald Sie dies getan haben, können Sie eine js-Datei in diesem Ordner erstellen, wie zum Beispiel:

module.exports = function(client) { 
    return { 
    gotoUrl: function() { 
     return client 
     .url(client.launchUrl); 
    }, 
    }; 
}; 

Und dann können Sie Ihren Test schreiben wie:

module.exports = { 
    'Login page has a login button': (browser) => { 
    browser.page.pagescriptname() 
     .gotoUrl() 
     .waitForElementVisible('body', 10000) 
     .assert.containsText('button', 'SIGN IN') 
     .end(); 
    } 
} 

Vergewissern Sie sich, dass Sie konfiguriert launch_url in Ihrer Datei nightwatch.js (oder dies kann dynamisch geändert werden (was ich für mein Projekt getan habe)