Automatische webtests met Ruby, Capybara en Selenium

Deze tutorial is erop gericht om u te laten zien hoe ze kunnen worden gemaakt projecten om webpagina's automatisch te testen, heeft een oppervlakkige uitleg met een voorbeeld van testen naar de YouTube-pagina. Je moet basisbegrippen van Ruby hebben om het goed te begrijpen.

OpmerkingDeze test is gelanceerd in Ubuntu 15.10, daarom raad ik aan om Linux te gebruiken voor de uitvoering ervan, maar ik heb aangegeven hoe de programma's in Windows moeten worden geïnstalleerd.

1. Installeer de nodige vereisten


We hebben Ruby en zijn edelstenen nodig (als je Mac gebruikt, heb je hem al geïnstalleerd).

Ruby installeren op Windows
Om het installatieprogramma te downloaden, klikt u op de volgende knop:

DOWNLOAD RUBY VOOR WINDOWS

Eerst downloaden en installeren we Ruby-installatieprogramma, (zorg ervoor dat u tijdens de installatie de optie aanvinkt om Ruby aan het Windows-PATH toe te voegen), en vervolgens de ontwikkelingskit, pak de inhoud uit op schijf C in een map die je moet maken. Ik noem het Devkit, maar je kunt het noemen wat je wilt (zie de volgende afbeelding).

Open nu de Windows cmd en voer de volgende instructies uit::

 chdir C: \ Devkitruby dk.rb initruby dk.rb installeren

Ruby-installatie op Linux
In de meest recente versies hebben we Ruby al geïnstalleerd, maar voor het geval, je moet rennen:

 sudo apt-get install rubysudo apt-get install rubygems
[kleur = # a9a9a9] Ruby-installatie [/ kleur]

Installeer de rest van de benodigde programma's (geldig voor alle besturingssystemen)
Nodig hebben Komkommer installeren, een testtool waarmee we BDD kunnen uitvoeren.

 gem installeer komkommer
We hebben ook nodig installeer Capibara, wat een specifieke taal is die ons zal helpen bij de interactie met webpagina's.
 edelsteen installeer capibara
En tot slot moet je selenium installeren, is een driver voor Capybara, gebruikt de JavaScript-engine van de browser en stelt ons in staat om visueel te zien hoe de test wordt doorstaan.
 gem installeer selenium-webdriver
Het is nogal traag.

2. Maak het project


Zodra we alles hebben geïnstalleerd, gaan we de structuur van ons project creëren.

Stap 1
Laten we een map maken, laten we hem noemen Testen-Selenium. Het zal de map zijn die alle bestanden zal bevatten die we nodig hebben, daarom kunnen we het beschouwen als de hoofdmap van het project.

Stap 2
In de map Testen-Selenium (hoofdmap) laten we een map maken met de naam Kenmerken. Die bevat alles wat je nodig hebt om het proces uit te voeren.

Stap 3
In de map features maken we nog 2 mappen aan (step_definities Y steun) en ook een bestand genaamd testfunctie.

Stap 4
Binnen step_definitions zullen we een Ruby-bestand maken met de naam step_Youtube.rb. en nu zullen we in de ondersteuningsmap een ander Ruby-bestand maken met de naam omgeving.

Stap 5
We vullen het bestand test.feature in, het zal worden geschreven in formele taal (Augurk), het definieert de test die we willen halen in een taal die door iedereen wordt begrepen (de test zelf is het podiumgedeelte, de rest is een beschrijving) In. De inhoud is als volgt:

 #taal: is Kenmerk: Ga naar youtube Als tester wil ik youtube invoeren om de zoekopdracht te testen Om te weten of alles goed werkt Scenario: Test youtube Aangezien ik op de youtube-pagina ben Als ik zoek naar "Metallica One" Dan kan ik invoeren en bekijk de video "https://www.youtube.com/watch?v=iT6vqeL-ysI"
In het stagegedeelte kunnen we geen accenten of vreemde tekens gebruiken, en de variabelen staan ​​tussen dubbele aanhalingstekens (dit zijn de gegevens die aan onze Ruby-code worden doorgegeven).

Stap 6
Het is de beurt aan het bestand step_Youtube.rb, Het is de Ruby-code die onze tests zal doorstaan, kijk naar de code die heeft (Given, When, So) elke functie verwijst naar een regel, degenen die eerder "variabelen" hadden ontvangen parameters (1 voor elke variabele in de .feature ), hiervoor is het noodzakelijk om reguliere expressies te gebruiken. Onder de code.

 Aangezien / Ik ben op de youtube-pagina $ / ga naar 'https://www.youtube.com/?hl=en&gl=EN' end When (/ Ik zoek naar "([^"] *) "$ / ) do | search | fill_in 'search_query',: with => search click_button 'Search' end Dan (/ kan ik de video invoeren en bekijken "([^"] *) "$ /) do | video | resultaten = alle ('a'). map {| a | a ['href']} indien niet resultaten.inclusief? (video) verhoog "Video niet gevonden" einde bezoek (video) einde
In deze code, in de tweede functie, kun je search_query zien, deze naam die ik niet heb uitgevonden, is het naamattribuut dat het YouTube-zoekvak heeft.

De instructie: resultaten = alle ('a'). map {| a | een ['href']}Wat het doet is een lijst krijgen van alle elementen a op de pagina, en uit die lijst haalt het de waarden van de href-attributen, slaat ze op in de resultaatvariabele, en op deze manier kunnen we zien of het web dat we willen te bezoeken staat op de pagina. In dit voorbeeld hangt het ervan af of het nummer op de eerste pagina verschijnt, dus als de test niet verschijnt, wordt deze rood en als niet alles groen is, zal ik een afbeelding laten zien op het einde van de uitvoer).

Stap 7
We gaan het laatste env.rb-bestand invullen, het is een configuratiebestand, het geeft de taal aan die moet worden gebruikt, de stuurprogramma's, enz. In dit geval gebruiken we Capibara en Selenium.

 'capybara' vereisen 'capybara / dsl' vereisen Capybara.default_driver =: seleniummodule Helpers def without_resynchronize page.driver.options [: resynchronize] = false yield page.driver.options [: resynchronize] = true end end World (Capybara :: DSL, helpers)
Hier heb je de code.

3. Voer het project uit


Het is tijd om run ons project om Youtube te testen.

Stap 1
We openen een terminal of cmd en gaan naar de map Testing-Selenium, waar al ons eerder gemaakte project zich bevindt.

Stap 2
We schrijven komkommer en we geven enter, zal Cucumber in de map features zoeken naar de .feature-bestanden (in dit geval zijn er maar 1) en de stappen (Ruby-bestanden) van die .features. Als het correct is, zullen we zien hoe de browser wordt geopend en de tests beginnen uit te voeren. Als u de Ruby-functies niet hebt gedefinieerd, verschijnt er een scherm dat aangeeft dat de stappen niet zijn gedefinieerd, zoals in de volgende afbeelding:

Als alles goed gaat, krijg je een scherm zoals het volgende:

OpmerkingAls het je een waarschuwing geeft en geen kleur geeft in Windows, bezoek dan deze repository.

Als je een snellere test wilt, heb je een browser nodig zonder grafische interface (Phantomjs) en Poltergeist die een driver is voor Capybara (hetzelfde als Selenium) maar die verbinding maakt met Phantomjs.

  • Poltergeist installeren:
     edelsteen installeer poltergeist
  • Installeer Phantomjs:
     gem installeer phantomjs

Als je het hele project wilt downloaden, voeg ik een zip bij (onthoud dat de test is geslaagd in Ubuntu):

Testen-Selenium.zip 1.71K 167 Downloads

Vond je deze Tutorial leuk en heb je eraan geholpen?Je kunt de auteur belonen door op deze knop te drukken om hem een ​​positief punt te geven

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave