1

Ich verwende Nightwatch.js (Selenium/WebDriver), um meine Node.js-Anwendung zu testen.Wie testen, ob das Navigationsmenü alle erwarteten Elemente enthält?

Jetzt möchte ich testen, ob eine Navigationsleiste existiert und ich möchte auch testen, ob die Elemente der Navbar wie erwartet sind.

So habe ich versucht, alle Navigationselemente zu bekommen, aber ich weiß nicht, wie man die Elemente überprüft. Ich denke auch, das ist ein bisschen zu kompliziert. Ist das die richtige Art, Nightwatch.js zu benutzen?

module.exports = { 
    'navigation': function(browser) { 
    var navElements = [] 

    function getNavElements(elements) { 
     elements.value.forEach(function(element) { 
     browser.elementIdText(element.ELEMENT, function(res) { 
      navElements.push(res.value) 
     }) 
     }) 
    } 

    browser 
     .url(browser.launchUrl) 
     .waitForElementVisible('#nav', 10000) 

    browser.expect.element('#nav').to.be.present 

    browser.elements('css selector', '#nav > .item', getNavElements) 
    browser.expect(navElements).to.equal(['First', 'Second', 'Third']) 

    browser.end() 
    } 
} 

Antwort

0

Ihr Code ist fast richtig, aber das ist, was Sie verpasst haben:

  • getNavElements ist ein Rückruf, so dass man nicht sicher sein kann, dass navElements bevölkert werden erwartet, wenn Sie es auf den nächsten Test Linie.
  • browser.expect ist keine Funktion. Es ist ein einfaches Objekt mit einer element Methode. Wenn Sie einen normalen Test mit expect durchführen möchten, müssen Sie Chai direkt verwenden (Nightwatch BDD-style-Schnittstelle basiert auf dieser Bibliothek).

Hier ist ein minimaler Arbeitscode:

HTML (index.html)

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Nightwatch</title> 
</head> 
<body> 
    <ul id="nav"> 
    <li class="item">First</li> 
    <li class="item">Second</li> 
    <li class="item">Third</li> 
    </ul> 
</body> 
</html> 

JavaScript (nav.js)

var expect = require('chai').expect; 

module.exports = { 
    'Navigation': function (browser) { 
    var expectedNavElements = ['First', 'Second', 'Third']; 

    function testNavElements(elements) { 
     elements.value.forEach(function (element, index) { 
     browser.elementIdText(element.ELEMENT, function(res) { 
      expect(res.value).to.equal(expectedNavElements[index]); 
     }); 
     }); 
    } 

    browser 
     .url('http://localhost:8000/index.html') // Change this if needed 
     .waitForElementVisible('#nav', 1000); 

    browser.expect.element('#nav').to.be.present; 
    browser.elements('css selector', '#nav > .item', testNavElements); 

    browser.end(); 
    } 
}; 

Befehle

  1. npm i chai zu Chai installieren
  2. nightwatch -t tests/nav.js

Beachten Sie die Testsuite ausgeführt wird: Wenn Chai Erwartungen passieren, Sie erhalten keine Nachricht in der Konsole weil dies nicht von Nightwatch nativ gehandhabt wird. Aber wenn sie nicht bestehen, erhalten Sie einen Assertionsfehler. Versuchen Sie, falsche Werte in expectedNavElements und Sie werden sehen ...

Verwandte Themen