Stap 6: Tips en trucs
- Foutopsporing:
- Inschakelen van logboekregistratie op het niveau van het stuurprogramma voor meer foutopsporing en logboeken maken.
- Set logLevel naar 'uitgebreide'
- LogOutput ingesteld op de naam van de map ('logs')
- Inschakelen van logboekregistratie op het niveau van het stuurprogramma voor meer foutopsporing en logboeken maken.
// load the driver for browser driver = webdriverio.remote({ desiredCapabilities: {browserName: process.env.SELENIUM_BROWSER || 'chrome'} });
- Gebruik console.log(), debug() getText() te debuggen.
- console.log() - gebruiken voor het weergeven van informatie om te bepalen van de staat.
- debug() - gebruik pauze browser/script totdat u op enter drukt op de opdrachtregel.
- getText() - gebruiken om te controleren of je zijn interactie met het juiste element.
- Vooral handig met xpath-expressies.
// reusable code - library<br> // code snippet if(bp == "DESKTOP") { obj.width = 1200; obj.height = 600; obj.name = bp; } else if(bp == "TABLET") { obj.width = 992; obj.height = 600; obj.name = bp; } else if(bp == "MOBILE") { obj.width = 768; obj.height = 400; obj.name = bp; }
- Gebruik ' Environment ' Variable dynamisch wijzigen van de Browser:
- Gebruik ' environment ' variable SELENIUM_BROWSER om te roepen van een andere browser zonder wijziging van het testscript telkens.
- Vereist een lichte codering verandering te ondersteunen.
Wijzigingen in de code:
// Test script before( function(done) { winsize = common.getWindowSizeParams(); ... driver.addCommand('setWindowSize', common.setWindowSize.bind(driver)); } // set the window size it('should set window size', function (done) { // only the width matters driver.setWindowSize(winsize.width, winsize.height, function () {}).call(done); });
Ondersteunde Browsers:
- Internet Explorer - IE 8 + (alleen Windows)
- SELENIUM_BROWSER = ie mokka
- Firefox 10 + (Windows/Max/Linux)
- SELENIUM_BROWSER = firefox mokka
- Chrome 12 + (Windows/Max/Linux)
- SELENIUM_BROWSER = chroom mokka
- Opera 12 +
- SELENIUM_BROWSER = opera mokka
- Safari
- SELENIUM_BROWSER = safari mokka
Testen:
- Gebruik git bash shell voor Windows:
- SELENIUM_BROWSER = chroom mokka
- $ SELENIUM_BROWSER = chroom mokka DynamicBrowser.js
- Voor Mac of Linux, open terminal:
- SELENIUM_BROWSER = chroom mokka
- $ SELENIUM_BROWSER = chroom mokka DynamicBrowser.js
- Responsieve testen:
- Onderbrekingspunten die zijn gebaseerd op project of kader (dwz bootstrap) bepalen.
- Omgevingsvariabelen voor elke onderbrekingspunt definiëren:
- BUREAUBLAD - 1200 px
- TABLET - 992 px
- MOBILE - 768 px
- Ontwikkelen van een herbruikbare opdracht om te lezen van de omgevingsvariabele en de grootte van de browser.
- Zie het voorbeeld hieronder.
- Bel de herbruikbare opdracht in uw testscript.
// verifyLastNameCheckError() // // Description: // Verifies the last name form validation error message // // Input: // number - index of error (1-5) // Output: // none // var verifyLastNameCheckError = function () { var idx = arguments[0], callback = arguments[arguments.length - 1]; this .getText("//ul[ alert-danger']/li[" + idx + "]", function(err, e) { console.log('Error found: ' + e); (e).should.be.equal('Please enter last name'); }) .call(callback); }; // export the function module.exports.verifyLastNameCheckError = verifyLastNameCheckError;
// require the reusable command - CommonLib common = require('./Common/CommonLib'); ... // bind the commands driver.addCommand('verifyFirstNameError', common.verifyFirstNameCheckError.bind(driver)); driver.addCommand('verifyLastNameError', common.verifyLastNameCheckError.bind(driver)); it('should contain 2 errors: first/last name', function () { // call the reusable function driver .verifyFirstNameError(1); .verifyLastNameError(2); });
- Herbruikbare opdrachten (aangepaste opdrachten):
- Web Driver IO is eenvoudig uitbreidbaar.
- Ik heb alle herbruikbare opdrachten in een bibliotheek. (misschien is dit oude school, maar het werkt!)
common/commonLib.js
// Set/verify first/last name using Callback it('should set/verify first/last name using Callbacks', function (done) { driver.setValue("#fname", "Tony", function (e) { driver.getValue("#fname", function (err, e) { (e).should.be.equal("Tony"); console.log("First Name: " + e); driver.setValue("#lname", "Keith", function (e) { driver.getValue("#lname", function (err, e) { (e).should.be.equal("Keith"); console.log("Last Name: " + e); done(); }); }); }); }); });
Hier zijn de specifieke veranderingen die nodig zijn om een herbruikbare functie roepen
Zie formFieldValidation.js voor een volledig werkend voorbeeld
// Set/verify first/last name using Promises it('should set/verify first/last name using Promises', function () { return driver.setValue("#fname", "Tony") .getValue("#fname").then( function (e) { (e).should.be.equal("Tony"); console.log("First Name: " + e); }) .setValue("#lname", "Keith") .getValue("#lname").then( function (e) { (e).should.be.equal("Keith"); console.log("Last Name: " + e); }); });
- Project bestand/Directory structuur:
- Hier is een typisch projectstructuur:
- "Project" - belangrijkste project directory
- README.md - Leesmij-bestand voor global project
- "Gemeenschappelijke" - map voor global functions gemeenschappelijk zijn voor alle projecten
- common-lib.js - global functiebibliotheek
- README.md - Leesmij-bestand voor globale functies
- "Product1" - map voor product 1
- test-script1.js
- test-script2.js
- "Gemeenschappelijke" - map voor lokale functies aan project 1
- prod1-lib.js - lokale functiebibliotheek voor project 1
- README.md - Leesmij-bestand voor lokale functies aan project 1
- "Product2" - map voor het product 2test-script1.jstest-script2.js
- "Gemeenschappelijke" - map voor lokale functies aan project 2
- prod2-lib.js - lokale functiebibliotheek voor project 2
- README.md - Leesmij-bestand voor lokale functies aan project 2
- "Gemeenschappelijke" - map voor lokale functies aan project 2
- "Project" - belangrijkste project directory
- Hier is een typisch projectstructuur:
- Testscripts opsplitsen in meerdere bestanden:
- Hier is een voorbeeld van het gebruik van meerdere bestanden:
- Geestelijke gezondheid te controleren - basis testscript om te controleren of dat alles werkt
- Statische Element en tekst validatie - Controleer of alle elementen en tekst
- Formulier/pagina fout validatie - fout validatie
- Zoekresultaten - dynamische inhoud van de test
- Hier is een voorbeeld van het gebruik van meerdere bestanden:
- Callbacks VS. Beloften:
- Versie 3 van Web Driver IO ondersteunt zowel callbacks en beloften.
Beloften zijn de voorkeur omdat het vermindert de foutafhandeling
code. Zie hieronder het zelfde voorbeeld geschreven met behulp van retouraanroepen en beloften.
- Versie 3 van Web Driver IO ondersteunt zowel callbacks en beloften.
Callbacks
Beloften