2016-07-09 3 views
1

In Geb und WATIR gibt es bestimmte Schlüsselwörter, die wir verwenden, um die page_url zu besuchen, die wir in der Seitenklasse angegeben haben. Z.B. to Stichwort in Geb und visit Stichwort in WATIR.page object: visit <page_url> in nightwatch.js

Welche ähnliche können wir in nightwatch.js verwenden. Dies ist, was ich versucht habe, aber es gibt Fehler:

ich versucht habe:

module.exports = { 
    url: function() { 
     return this.api.globals.launchUrl + "/goto/desiredPage.html"; 
    }, 
    commands: [pageCommands], 
    elements: {} 
}; 

In Seitenklasse ich bin mit wie:

desiredPage 
      .url() 
      .foo() 
      .bar(); 
client.end(); 

aber es gibt Fehler .url is not a function.

Antwort

0

Sie können die Nachtschwärmer-Beispiele in den Nachtschwärmer-Ordnern siehe zum Beispiel:

[page-objects/home.js] 
var searchCommands = { 
    submit: function() { 
    this.waitForElementVisible('@submitButton', 3000) 
     .click('@submitButton') 
     .api.pause(1000); 
    return this; // Return page object for chaining 
    } 
}; 

module.exports = { 
    url: 'http://google.com', 
    commands: [searchCommands], 
    elements: { 
    searchBar: { selector: 'input[name=q]' }, 
    submitButton: { selector: 'button[type=submit]' } 
    } 
}; 

und dann im Test:

/* jshint expr: true */ 
module.exports = { 
    'Demo Google search test using page objects' : function (client) { 
    var homePage = client.page.home(); 
    homePage.navigate(); 
    homePage.expect.element('@searchBar').to.be.enabled; 

    homePage 
     .setValue('@searchBar', 'Nightwatch.js') 
     .submit(); 

    var resultsPage = client.page.searchResults(); 
    resultsPage.expect.element('@results').to.be.present.after(2000); 
    resultsPage.expect.element('@results').to.contain.text('Nightwatch.js'); 
    resultsPage.expect.section('@menu').to.be.visible; 

    var menuSection = resultsPage.section.menu; 
    menuSection.expect.element('@web').to.be.visible; 
    menuSection.expect.element('@video').to.be.visible; 
    menuSection.expect.element('@images').to.be.visible; 
    menuSection.expect.element('@shopping').to.be.visible; 

    menuSection.productIsSelected('@web', function(result) { 
     this.assert.ok(result, 'Web results are shown by default on search results page'); 
    }); 

    client.end(); 
    } 
}; 

so "url()" Befehl in Seiten existiert nicht Sie Sie müssen die URL auf der Seite definieren und stattdessen "navigate()" verwenden.