Web Driver IO Tutorial met behulp van een Live website en voorbeelden werken (6 / 8 stap)

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')
 // 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
  • 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
  • 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.

Callbacks

Beloften

			
          

Gerelateerde Artikelen

RGB LED Tutorial (met behulp van een Arduino) (RGBL)

RGB LED Tutorial (met behulp van een Arduino) (RGBL)

LED's zijn geweldig. Maar er een punt waar het opvlammen eenvoudigweg niet voldoende is bij elk project komt. Voor deze gevallen een RGB (rood, groen, blauw) is LED het antwoord.Elke kleur gloed met een RGB LED zult u kunnen tot uw hartje begeert.Bij
Maak een Web aangesloten Robot (voor ongeveer $500) (met behulp van een Arduino en Netbook)

Maak een Web aangesloten Robot (voor ongeveer $500) (met behulp van een Arduino en Netbook)

dit Instructable zal u tonen hoe te bouwen van uw eigen Web aangesloten Robot (met behulp van een Arduino micro-controller en de Asus eee pc).Waarom zou u een Web aangesloten Robot willen? Om mee te spelen natuurlijk. Rijd uw robot van hele kamer of
555 RGB Rainbow LED Driver (niet met behulp van een 4029)

555 RGB Rainbow LED Driver (niet met behulp van een 4029)

| A_Teacher |OK, is dus voor zover ik kan vertellen, dit een uniek merk Nieuw ontwerp.Alle ruimte Cadets bellen: Als een manier van motiveren mensen om het project te maken, ik ben momenteel weggeven een 3 maand Instructables Pro lidmaatschap aan de
Hoe maak je een installatieschijf met behulp van een flash drive 8gb

Hoe maak je een installatieschijf met behulp van een flash drive 8gb

Hoe maak je een installatieschijf met behulp van een flash drive 8gbhttp://www.YouTube.com/watch?v=FQ4EyWHcSpohttp://www.microsoftstore.com/Store/msstore/HTML/pbPage.Help_Win7_usbdvd_dwnToolwindows 7 inorder om dit te doen moethet bestand moet een IS
Bewerking van een PCB met behulp van een goedkope CNC Machine

Bewerking van een PCB met behulp van een goedkope CNC Machine

Inleiding:Voor deze tutorial zullen we een ontwerp dat we van EAGLE, gebruik PCB-GCode en Autoleveler software te laden in onze ZEN Toolworks Mach 3 CNC machine gemaakt. Wat we kunnen doen is het vervolgens creëren van printplaten met behulp van onze
Vlucht controleren met behulp van een Raspberry PI en een DVB-Stick

Vlucht controleren met behulp van een Raspberry PI en een DVB-Stick

Als u een frequent flyer, of gewoon gepassioneerd over vliegtuigen, vervolgens Flightradar of Flightaware zijn 2 moet hebben websites (of apps, als daar zijn ook mobiele apps) die u wilt gebruiken op dagelijkse basis.Beide kunt u vlakken in real time
Indringende en een PCB met behulp van een Arduino-Based CNC frezen

Indringende en een PCB met behulp van een Arduino-Based CNC frezen

Tot onlangs PCB sonderen met behulp van een Arduino was gebaseerde CNC machine maar een loutere droom. Dankzij de mensen van Chilipeppr.com we nu hebben gebaseerde een bankje van de web-gebaseerde tool voor al onze Arduino CNC producten. Het beste de
Maken van een jurk met behulp van een commerciële patroon of leren van de taal van naaien

Maken van een jurk met behulp van een commerciële patroon of leren van de taal van naaien

Niet iedereen kan of zal maken hun eigen patroon naaien. Veel mensen willen gewoon weten hoe om te naaien iets draagbaar, met behulp van een commerciële patroon. Ik leer begin naaien voor volwassenen (voor het grootste deel) door middel van onze scho
De Linkit met behulp van een Raspberry PI Program

De Linkit met behulp van een Raspberry PI Program

In dit instructable, ik ga u tonen hoe te programmeren van de Linktit een bord met behulp van een Raspberry Pi, en ook seriële communicatie met het vast te stellen. Dit instructable ziet u hoe u een micro-controller (één Linkit) en het werk van een m
Snelle geïmproviseerde ' face-tracking camera met behulp van een Intel Edison

Snelle geïmproviseerde ' face-tracking camera met behulp van een Intel Edison

Dit is een tutorial over het bouwen van een eenvoudige camera van de face-tracking met arduino breakout board, een android-smartphone, een servomotor en een paar andere dingen die kan je rondslingeren in uw bureau met behulp van een Edison. De code i
Het opnieuw installeren van Windows op uw PC met behulp van een PSP

Het opnieuw installeren van Windows op uw PC met behulp van een PSP

Wanneer uw Vensters OS ontwikkelt enkele ernstige problemen of als u wilt bijwerken van uw bestaande besturingssysteem; de beste en meest betrouwbare optie is een schone installatie doen.Back-up van uw gegevens, veeg uw harde schijf en installeer Win
Van lege toetsen werkende sleutels zonder afbouw de sluis (met behulp van een handfile)

Van lege toetsen werkende sleutels zonder afbouw de sluis (met behulp van een handfile)

U hebt waarschijnlijk gezien lockpicking uitgelegd op verschillende "hacky" websites. Umisschien zelfs zijn beproefd op zelf. Maar wat als u wilt openen een vergrendeling een aantal keren? Zou het niet geweldig om te hebben een opening techniek
PhotoBooth macro photobucket met behulp van een webcam (geen camera)

PhotoBooth macro photobucket met behulp van een webcam (geen camera)

Ja, ik weet dat dit lijkt "het kan niet zo eenvoudig"...Waar zijn de camera's, batterijen, achtergronden, statieven, camera mounts, focus technieken, dure verlichting, reflectoren, diffusers, grote vakken, lange bouwtijd, kosten en zweren woorde
Met behulp van een Dot Matrix LED met een Arduino en Shift Register

Met behulp van een Dot Matrix LED met een Arduino en Shift Register

de Siemens DLO7135 Dot matrix LED is een verbazingwekkend stukje opto-elektronica. Het is gefactureerd als een 5 x 7 Dot Matrix intelligente Display (r) met geheugen/Decoder/Driver. Samen met dat het geheugen, het heeft een 96-ASCII karakterdisplay s