Automatisk webtesting med Ruby, Capybara og Selen

Denne opplæringen er fokusert på å vise deg hvordan de kan opprettes prosjekter for å teste nettsider automatisk, har en overfladisk forklaring med et eksempel på testing til YouTube -siden. Du må ha grunnleggende forestillinger om Ruby for å forstå det godt.

MerkDenne testen har blitt lansert i Ubuntu 15.10, derfor anbefaler jeg å bruke Linux for utførelsen, men jeg legger ut hvordan jeg installerer programmene i Windows.

1. Installer nødvendige krav


Vi trenger Ruby og edelstenene (hvis du bruker Mac, har du den allerede installert).

Installere Ruby på Windows
Klikk på følgende knapp for å laste ned installasjonsprogrammet:

LAST NED RUBY FOR WINDOWS

Først laster vi ned og installerer Ruby installatør, (i installasjonen må du sjekke alternativet for å legge Ruby til Windows PATH), og deretter utviklingssett, trekk ut innholdet på disk C i en mappe som du må lage Jeg kaller det Devkit, men du kan kalle det hva du vil (Se bildet nedenfor).

Åpne nå Windows cmd og utfør følgende instruksjoner:

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

Rubininstallasjon på Linux
I de nyeste versjonene har vi allerede installert Ruby, men bare i tilfelle, du må løpe:

 sudo apt-get install rubysudo apt-get install rubygems
[color = # a9a9a9] Rubininstallasjon [/ color]

Installer resten av de nødvendige programmene (Gyldig for alle operativsystemer)
Trenge installer agurk, som er et testverktøy som hjelper oss med å utføre BDD.

 perle installere agurk
Vi trenger også installere Capybara, som er et spesifikt språk som vil hjelpe oss å samhandle med websider.
 perle installere capybara
Og til slutt må du installere selen, er en driver for Capybara, bruker nettleserens JavaScript -motor og lar oss se hvordan testen passeres visuelt.
 gem installer selenium-webdriver
Det er litt tregt.

2. Lag prosjektet


Når vi har installert alt, skal vi lage strukturen i prosjektet vårt.

Trinn 1
La oss lage en mappe, la oss kalle den Testing-selen. Det vil være mappen som inneholder alle filene vi trenger, derfor kan vi betrakte den som rotmappen til prosjektet.

Steg 2
Inne i mappen Testing-selen (rotmappe) la oss lage en mappe som heter funksjoner. Som vil inneholde alt du trenger for å kjøre prosessen.

Trinn 3
Inne i funksjonsmappen lager vi ytterligere 2 mapper (trinn_definisjoner Y Brukerstøtte) og også en fil som heter test.funksjon.

Trinn 4
Inne i step_definitions vil vi lage en Ruby -fil som heter step_Youtube.rb. og nå i støttemappen vil vi lage en annen Ruby -fil som heter env.rb.

Trinn 5
Vi fyller ut test.feature -filen, det vil bli skrevet på formelt språk (Gherkin), det definerer testen som vi ønsker å bestå på et språk som alle forstår (Selve testen er scenedelen, resten er en beskrivelse) I. Innholdet er som følger:

 #språk: er karakteristisk: Gå til youtube Som tester vil jeg gå inn på youtube for å teste søket For å vite om alt fungerer bra Scenario: Test youtube Siden jeg er på youtube -siden Når jeg søker etter "Metallica One" Da kan jeg gå inn og se videoen "https://www.youtube.com/watch?v=iT6vqeL-ysI"
I scenedelen kan vi ikke bruke aksenter eller rare tegn, og variablene er omsluttet av doble anførselstegn (det vil være dataene som sendes til vår Ruby -kode).

Trinn 6
Det er turen til step_Youtube.rb -filen, Det er Ruby -koden som vil bestå testene våre. Se på koden som har (Gitt, Når, Så) hver funksjon refererer til en linje, de som tidligere hadde "variabler" mottar parametere (1 for hver variabel i .funksjonen ), for dette er det nødvendig å bruke vanlige uttrykk. Under koden.

 Siden/ Jeg er på youtube -siden $/ besøk "https://www.youtube.com/?hl=no&gl=EN" slutten Når (/ jeg søker etter "([ ^"] *) "$ /) do | search | fill_in 'search_query' ,: with => search click_button 'Search' end Then ( / I can enter and watch the video "([ ^"] *) "$ /) do | video | resultater = alle ('a'). kart {| a | a ['href']} hvis ikke resultater. inkludere? (video) heve "Video not found" avslutte besøk (video) slutt
I denne koden, i den andre funksjonen kan du se search_query, dette navnet jeg ikke har funnet opp er navnetattributtet som Youtube -søkeboksen har.

Instruksjonen: resultater = alle ('a'). kart {| a | a ['href']}Det den gjør er å få en liste over alle elementene a på siden, og fra den listen får den verdiene til href -attributtene, lagrer dem i resultatvariabelen, og på denne måten kan vi se om nettet vi ønsker å besøke er på siden, I dette eksemplet vil det avhenge av om sangen vises på den første siden, så hvis testen ikke vises, kommer den ut rødt og hvis ikke alt er grønt, vil jeg vise et bilde kl. slutten av utgangen).

Trinn 7
Vi skal fylle ut den siste env.rb -filen, det er en konfigurasjonsfil, det vil indikere språket som skal brukes, driverne, etc. I dette tilfellet bruker vi Capybara og selen.

 krever 'capybara' krever 'capybara / dsl' Capybara.default_driver =: selenmodul Hjelper def uten_resynkroniser side.driver.options [: resynchronize] = false yield side.driver.options [: resynchronize] = true end end World (Capybara :: DSL, hjelpere)
Her har du koden.

3. Kjør prosjektet


Det er tid for kjøre prosjektet vårt å teste Youtube.

Trinn 1
Vi åpner en terminal eller cmd og går til mappen Testing-Selenium, der alt vårt tidligere opprettede prosjekt er.

Steg 2
Vi skriver agurk og vi gir enter, Agurk vil se i funksjonsmappen for .feature -filene (i dette tilfellet er det bare 1) og trinnene (Ruby -filer) for disse .funksjonene. Hvis det er riktig, vil vi se hvordan nettleseren åpnes og begynner å kjøre testene. Hvis du ikke har Ruby -funksjonene definert, vises det en skjerm som indikerer at trinnene ikke er definert, for eksempel følgende bilde:

Hvis alt går riktig vil du ende opp med en skjerm som følgende:

MerkHvis den gir deg en advarsel og ikke maler farge i Windows, kan du gå til dette depotet.

Hvis du vil ha en raskere test, trenger du en nettleser uten et grafisk grensesnitt (Phantomjs) og Poltergeist som er en driver for Capybara (samme som Selenium), men som kobles til Phantomjs.

  • Installer Poltergeist:
     perle installere poltergeist
  • Installer Phantomjs:
     perle installere phantomjs

Hvis du vil laste ned hele prosjektet, legger jeg ved en zip (husk at testen er bestått i Ubuntu):

Testing-Selenium.zip 1.71K 167 Nedlastinger

Likte og hjalp du denne opplæringen?Du kan belønne forfatteren ved å trykke på denne knappen for å gi ham et positivt poeng

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave