2016-07-14 5 views
0

Nightwatch verwenden Ich habe eine Seite Objekt erstellt, die ähnlich wie diese before() Funktion desIch kann nicht .navigate() funktioniert, wenn ich Abschnitte in meiner Seite Objekt definieren

module.exports = { 

    url() { 
     return `${this.api.launchUrl}/mypage`; 
    }, 

    sections: { 

     main: { 

      selector: '.foo', 

      elements: { 
       bar: '[name="baz"]', 
      }, 
     }, 
    }, 
}; 

Und in meinem Test sieht Ich rufe es so

module.exports = { 

    before(browser) { 
     const page = browser.page.buy.myPageObject(); 
     page.navigate(); 
     page.sections.main.waitForElementVisible('@bar'); 
    }, 

    (...) 
}; 

Und ich bin mit totaler Stille gegrüßt. Es werden keine Fehler protokolliert, es wird kein Browserfenster geöffnet, und nach einer Weile wird der Vorgang still beendet.

Nun, wenn ich nicht mit Abschnitten meiner Seite Objekt ändern:

module.exports = { 

    url() { 
     return `${this.api.launchUrl}/mypage`; 
    }, 

    //sections: { 

    // main: { 

    //  selector: '.foo', 

      elements: { 
       bar: '[name="baz"]', 
      }, 
    // }, 
    //}, 
}; 

und ändern Sie die entsprechende Zeile in dem Test page.waitForElementVisible('@bar'); mein Test läuft gut.

ich nicht in der Lage, finden jede Erwähnung von mir nicht url() zusätzlich zu sections im docs so meine Frage zu verwenden ist: bin ich etwas fehlt offensichtlich hier? Ist das etwas, was ich nicht tun soll?

Ich würde zumindest irgendeine Art von Fehlermeldung erwarten, wenn ich etwas falsch mache. Es gibt keine Syntaxfehler im umgebenden Code, es wurde erfolgreich von eslint analysiert.

Antwort

0

Weitere Grabung zeigt, dass das eigentliche Problem nicht in der Lage ist, Befehle auf Abschnitten zu verwenden.

Es gibt ein offenes Problem für diese als Enhancement auf github gekennzeichnet.

Lange Rede kurzer Sinn, ist die Abhilfe

const selector = page.section.main.selector; 
    page.waitForElementVisible(selector); 

Nun ist dies nicht „Feature-äquivalent“, da es wartet nur für den Abschnitt dort zu sein, aber das ist in Ordnung und können die Tests prüfen, ob die Eingabe tatsächlich existiert. Der Hauptpunkt des Wartens in der Vorherzeit besteht darin, darauf zu warten, dass die Seite trotzdem gerendert wird.