Web drivrutin IO handledning med hjälp av en levande webbplats och arbetar exempel (6 / 8 steg)
Steg 6: Tips och Tricks
- Felsökning:
- Aktivera loggning på den föraren nivån för mer debug och skapa loggar.
- Ange logLevel till "verbose"
- Ange logOutput till katalognamn (loggar)
- Aktivera loggning på den föraren nivån för mer debug och skapa loggar.
förare = webdriverio.remote (loglevel: "verbose", logOutput: "loggar", {desiredCapabilities: {browserName: 'firefox'}}); < br >
- Använda console.log(), debug(), meddelandsträngar för att felsöka.
- Console.log() - Använd för att visa information för att avgöra tillstånd.
- debug() - Använd pause webbläsare/skript tills retur trycks på kommandoraden.
- meddelandsträngar - använda för att kontrollera du interagerar med rätt element.
- Särskilt användbart med xpath-uttryck.
Klicka på punkt 3 från lista
det ("bör Klicka på punkt 3 från listan", funktion () {
Använd meddelandsträngar för att verifiera xpath är korrekt för elementet
returnera drivrutin
.getText("//ul [(länk) {
använda console.log() till produktionen information
Console.log (' länken finns: ' + länk);
(länk).should.equal ("punkt 3").
})
Använd debug() för att stoppa åtgärder för att se vad som händer i webbläsaren
.debug()
.Click("//UL [(funktion () {
Console.log ('länk klick');
})
vänta på google sökformuläret ska visas
.waitForVisible("#tsf", 20000).then (funktion (e) {
Console.log ("Sök Resultat funna');
});
});
- Använda miljövariabeln att ändra webbläsaren dynamiskt:
- Använda miljövariabeln SELENIUM_BROWSER för att åberopa en annan webbläsare utan att ändra skriptet test varje gång.
- Kräver en liten kodning förändring till stöd.
Kodförändringar:
läsa in drivrutinen för webbläsare
förare = webdriverio.remote ({desiredCapabilities:
{browserName: process.env.SELENIUM_BROWSER || "chrome"}});
Webbläsare som stöds:
- Internet Explorer - dvs 8 + (endast Windows)
- SELENIUM_BROWSER = ie mocha
- Firefox 10 + (Linux/Windows/Max)
- SELENIUM_BROWSER = firefox mocha
- Chrome 12 + (Linux/Windows/Max)
- SELENIUM_BROWSER = krom mocha
- Opera 12 +
- SELENIUM_BROWSER = opera mocha
- Safari
- SELENIUM_BROWSER = safari mocha
Testning:
- För Windows använda git bash-skalet:
- SELENIUM_BROWSER = krom mocha
- $ SELENIUM_BROWSER = krom mocka DynamicBrowser.js
- För Mac eller Linux, öppna terminal:
- SELENIUM_BROWSER = krom mocha
- $ SELENIUM_BROWSER = krom mocka DynamicBrowser.js
- Lyhörd tester:
- Bestämma brytpunkter baserat på projekt eller RAM (dvs bootstrap).
- Definiera miljövariabler för varje brytpunkt:
- DESKTOP - 1200 px
- TABLET - 992 px
- MOBIL - 768 px
- Utveckla en återanvändbar kommando att läsa miljövariabeln och ställa in storleken webbläsare.
- Se exemplet nedan.
- Anropa kommandot återanvändbara i din testskript.
återanvändbar kod - biblioteket < br > / / kod utdrag
om (bp == "DESKTOP") {
obj.width = 1200;
obj.height = 600;
obj.Name = bp;
}
annars om (bp == "TABLET") {
obj.width = 992;
obj.height = 600;
obj.Name = bp;
}
annars om (bp == "MOBILE") {
obj.width = 768;
obj.height = 400.
obj.Name = bp;
}
Testskript
före (function(done) {
WinSize = common.getWindowSizeParams();
...
driver.addCommand ('setWindowSize', common.setWindowSize.bind(driver));
}
Ange fönstrets storlek
det ("ska in fönsterstorlek", fungera (gjort) {
endast de bredd frågorna
driver.setWindowSize (winsize.width, winsize.height, funktion () {}) .call(done);
});
- Återanvändbara kommandon (anpassade kommandon):
- Web drivrutin IO är lätt utdragbara.
- Jag gillar att sätta alla återanvändbara kommandon i ett bibliotek. (kanske är gamla skolan men det fungerar!)
common/commonLib.js
verifyLastNameCheckError()
//
Beskrivning/kontroller:
Verifierar det sista namn form validering felmeddelandet
//
Ingång:
nummer - index för fel (1-5)
Utgång:
ingen
//
var verifyLastNameCheckError = funktion () {
var idx = argument [0],
motringning = arguments[arguments.length - 1];
Detta
.getText("//ul [alert-fara '] /li [" + idx + "]", function(err, e) {
Console.log ("fel hittades: ' + e);
e.should.be.equal ("Ange efternamn');
})
.Call(callback);
};
exportera funktionen
module.exports.verifyLastNameCheckError = verifyLastNameCheckError;
Här är de specifika ändringar behövs för att anropa en återanvändbar funktion
Se formFieldValidation.js för komplett fungerande exempel
kräver återanvändbara kommandot - CommonLib
gemensamma = require('./Common/CommonLib');
...
binda kommandon
driver.addCommand ('verifyFirstNameError', common.verifyFirstNameCheckError.bind(driver));
driver.addCommand ('verifyLastNameError', common.verifyLastNameCheckError.bind(driver));
det ("bör innehålla 2 fel: första/sista namn", fungera () {
anropa funktionen återanvändbara
driver
.verifyFirstNameError(1);
.verifyLastNameError(2);
});
- Projekt fil/katalog struktur:
- Här är typiska projektstruktur:
- "Projekt" - huvudprojektet katalog
- README.md - readme för globala projekt
- "Vanliga" - katalog för globala funktioner gemensamma för alla projekt
- common-lib.js - global funktionsbibliotek
- README.md - viktig information för globala funktioner
- "Product1" - katalog för produkten 1
- test-script1.js
- test-script2.js
- "Vanliga" - katalog för lokala funktioner till projekt 1
- prod1-lib.js - lokal funktionsbibliotek för projektet 1
- README.md - viktig information för lokala funktioner till projekt 1
- "Product2" - katalog för produkt 2test-script1.jstest-script2.js
- "Vanliga" - katalog för lokala funktioner till projekt 2
- prod2-lib.js - lokal funktionsbibliotek för projekt 2
- README.md - viktig information för lokala funktioner till projekt 2
- "Vanliga" - katalog för lokala funktioner till projekt 2
- "Projekt" - huvudprojektet katalog
- Här är ett urval av att använda flera filer:
- Sanity Check - grundläggande test script att kontrollera att allt fungerar
- Statiska Element och Text validering - kontrollera alla element och text
- Formulär/sida fel validering - fel validering
- Sökresultat - test dynamiskt innehåll
- Callbacks VS. Lovar:
- Version 3 av Web drivrutin IO stöder både callbacks och löften.
Löften är att föredra eftersom det minskar felhanteringen
kod. Se nedan samma exempel skrivs med callbacks och löften.
- Version 3 av Web drivrutin IO stöder både callbacks och löften.
Callbacks
Set/verifiera första/sista namn använder motringning
det ("bör set/verifiera första/efternamn med Callbacks", funktion (gjort) {
driver.setValue ("#fname", "Tony" funktion (e) {
driver.getValue ("#fname", funktion (err, e) {
(e).should.be.equal("Tony");
Console.log ("förnamn:" + e);
driver.setValue ("#lname", "Keith", funktion (e) {
driver.getValue ("#lname", funktion (err, e) {
(e).should.be.equal("Keith");
Console.log ("efternamn:" + e);
Done();
});
});
});
});
});
Löften
Set/verifiera första/sista namn med hjälp av löften
det ("bör set/verifiera första/efternamn med löften", funktion () {
återgå driver.setValue ("#fname", "Tony")
.getValue("#fname").then (funktion (e) {
(e).should.be.equal("Tony");
Console.log ("förnamn:" + e);
})
.setValue ("#lname", "Keith")
.getValue("#lname").then (funktion (e) {
(e).should.be.equal("Keith");
Console.log ("efternamn:" + e);
});
});