2016-12-13 1 views
0

j'ai un problème: j'ai une étape comme ceci:définitions étape générique Nightwatch sans éléments duplicationg dans pageobjects

this.Then(/^I click "([^"]*)" element$/, (browser, btn) => { 
    var main = browser.page.main_page(); 

    main 
     .waitForElementVisible('@' + btn, 3000) 
     .assert.visible('@' + btn) 
     .click('@' + btn) 
}); 

Je ne veux pas dupliquer la définition même pas pour un autre modèle d'objet page. Est-il possible de créer/construire un gros objet page lorsque j'exécute un test ou de faire en sorte que cet objet page contienne l'élément requis sans le saisir multiplier le temps dans les différents fichiers du modèle d'objet page.

Répondre

0

Solution 1:

this.Then(/^I click "([^"]*)" element from "([^"]*)"$/, (browser, btn, page_name) => { 
    var page_obj = browser.page[page_name](); 

    page_obj 
     .waitForElementVisible('@' + btn, 3000) 
     .assert.visible('@' + btn) 
     .click('@' + btn) 
}); 

Soluution 2:

créer définition donnée étape et l'étape comme ceci:

this.Given(/^I use the "([^"]*)" page object$/, function(browser, page) { 

    var p = browser.page[page] 
    if (p) { 
     browser.__page = p(); 
    } 
}); 

this.Then(/^I click "([^"]*)" element$/, (browser, btn) => { 
    var main = browser.__page; 

    main 
    .waitForElementVisible('@' + btn) 
    .assert.visible('@' + btn) 
    .click('@' + btn) 
});