Selen

Selen Web Automation med Python

Selen Web Automation med Python
Alle bruker nettet på et eller annet tidspunkt, så det er en enorm samtale for utviklere å sikre at webapplikasjonene fungerer som de skal. For å gjøre dette, kan nettautomatisering være veldig nyttig.

For at kommersiell programvare skal lykkes, må den gjennomgå et par tester. Automatisering kan være nyttig for brukertester, og simulere bruken av programvare akkurat som en bruker. Det er også nyttig for penetrasjonstester, for eksempel å prøve å knekke passord, utføre SQL-injeksjoner osv.

Bortsett fra testing, kan nettautomatisering være veldig nyttig for å skrape JavaScript-tunge nettsteder.

Selen er et av de mest effektive verktøyene for nettautomatisering. Det er veldig populært blant forskjellige språk også, tilgjengelig på språk som Java, JavaScript.

Installasjon

Selen kan installeres i python ved hjelp av pip-modulen som vist i kommandoen nedenfor:

pip installere selen

Det ville installere biblioteket og nødvendige avhengigheter. Installasjonen kan bekreftes ved å importere den i en interaktiv økt.

$ python
Python 3.5.2 (standard, 14. september 2017, 22:51:06)
[GCC 5.4.0 20160609] på linux
Skriv inn "help", "copyright", "credits" eller "lisens" for mer informasjon.
>>> importer selen

Siden det ikke skjedde noen feil, betyr det at installasjonen var vellykket. Imidlertid slutter det ikke der; Dette er fordi selen fungerer hånd i hånd med nettlesere som Chrome og Firefox, og det trenger en driver fra nettleseren for å kunne fortsette med sine plikter.

Vi kommer til å ta en titt på hvordan du får installert driverne. For Mozilla Firefox kan du laste ned driveren, kjent som geckodriver fra github-siden. Hvis du er Chrome-bruker, kan du laste ned driveren som kalles chromedriver fra det offisielle nettstedet.

Etter nedlasting legger du til driveren i banen. Personlig vil jeg ha en slik fil i min / usr / local / bin katalog, og jeg vil råde deg til å gjøre det samme.

Hvis du vil gjøre det samme, bør kommandoen nedenfor flytte den fra din nåværende katalog til søppel katalog.

$ sudo mv geckodriver / usr / local / bin
$ sudo mv chromedriver / usr / local / bin

Å legge til geckodriver eller chromedriver for å sti fra den katalogen, kjør følgende kommando.

$ eksport PATH = $ PATH: / usr / local / bin / geckodriver
$ eksport PATH = $ PATH: / usr / local / bin / chromedriver

Etter å ha lagt til driveren for ønsket nettleser i banen, kan du bekrefte om alt fungerer bra ved å kjøre følgende fra en interaktiv økt.

For Firefox:

$ python
Python 3.5.2 (standard, 14. september 2017, 22:51:06)
[GCC 5.4.0 20160609] på linux
Skriv inn "help", "copyright", "credits" eller "lisens" for mer informasjon.
>>> fra selen import webdriver
>>> webdriver.Firefox ()

For Chrome:

$ python
Python 3.5.2 (standard, 14. september 2017, 22:51:06)
[GCC 5.4.0 20160609] på linux
Skriv inn "help", "copyright", "credits" eller "lisens" for mer informasjon.
>>> fra selen import webdriver
>>> driver = webdriver.Chrome ()

Etter å ha kjørt det, hvis en nettleser kommer opp, fungerer alt bra. Nå kan vi fortsette å gjøre kule ting med Selen.

Det meste av koden for resten av denne artikkelen vil bli gjort i den interaktive økten, men du kan skrive den i en fil akkurat som det vanlige python-skriptet ditt.

Vi ville også jobbe med sjåfør variabel fra koden ovenfor.

Visting websider

Etter at nettsiden er åpen, kan du besøke hvilken som helst webside ved å ringe metode på sjåfør. Den åpnede nettleseren laster deretter inn adressen som er sendt inn, akkurat som når du gjør det selv.

Ikke glem å bruke http: // eller https: //, ellers må du takle ubehagelige feil.

>>> sjåfør.få ("http: // google.com ")

Dette vil laste inn Google-hjemmesiden.

Få kildekode

Nå som vi har lært å besøke websider, kan vi skrape data fra den besøkte websiden.

Fra sjåfør objekt, kan vi få kildekoden ved å ringe page_source kan du gjøre hva du vil med html ved hjelp av BeautifulSoup-biblioteket.

>> sjåfør.page_source

Fylling av tekstbokser

Hvis vi for eksempel har lastet Googles hjemmeside, og vi vil skrive inn litt informasjon i søkeboksen; det kan enkelt gjøres.

For å gjøre dette bruker vi inspektørelementet til å sjekke kildekoden og se taginformasjonen i søkeboksen. For å gjøre dette, høyreklikker du bare på søkeboksen og velger inspisér element.

På maskinen min fikk jeg følgende:

value = "" aria-label = "Søk" aria-haspopup = "false" role = "combobox" aria-autocomplete = "list"
style = "border: medium none; polstring: 0px; margin: 0px; høyde: auto; bredde: 100%;
bakgrunn: gjennomsiktig
url ("data: image / gif; base64, R0lGODlhAQABAID / AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEA
Ow% 3D% 3D ") gjenta bla 0% 0%; posisjon: absolutt; z-indeks: 6; venstre: 0px; disposisjon:
medium ingen; "dir =" ltr "stavekontroll =" falsk "type =" tekst ">

Med selen kan vi velge elementer enten etter kodenavn, id, klassenavn osv.

De kan implementeres med følgende metoder:

.finn_element_by_id
.finn_element_by_tag_name
.finn_element_by_klasse_navn
.finn_element_by_name

Fra google-nettsiden har søkefeltet en ID første-ib, så vi ville finne element etter id.

>>> search_box = driver.find_element_by_id ("lst-ib")

Nå som vi har funnet elementet og lagret det i en søkefelt variabel, kan vi utføre noen operasjoner i søkeboksen.

>>> søkeboks.send_keys ("Planet Earth")

Dette vil legge inn teksten "Planet Earth" i boksen.

>>> søkeboks.klar()

Dette vil fjerne den angitte teksten fra søkeboksen. Du bør bruke send_keys metode igjen, i neste avsnitt ville vi klikke på søkeknappen så vi har noe å søke.

Klikk på høyre knapp

Nå som vi har fylt ut søkeboksen med litt informasjon, kan vi gå videre og søke.

På samme måte som vi fant søkeboksen er den samme måten vi skal finne søkeknappen på.

På maskinen min fikk jeg følgende:

type = "send inn">

Når vi ser på dette, kan vi bruke navneattributtet. Vi kan få det ved å bruke koden nedenfor:

>>> søkeknapp = driver.finn_element_by_name ("btnK")

Etter å ha funnet ønsket kode, kan vi klikke på knappen ved hjelp av klikk metode.

>>> søkeknapp.klikk ()

Vær imidlertid forsiktig, på grunn av Googles automatiske forslag kan du ende opp med å søke etter noe annet.

For å omgå dette, må du få tastaturet til å trykke Enter-tasten umiddelbart. Nøkler er utenfor omfanget av denne artikkelen, men her er koden uansett.

>>> fra selen.webdriver.felles.nøkler importerer nøkler
>>> search_box = driver.find_element_by_id ("lst-ib")
>>> søkeboks.send_keys ("Planet Earth")
>>> søkeboks.send_keys (nøkler.KOMME TILBAKE)

Med koden ovenfor trenger vi ikke klikke søkeknappen. Det fungerer akkurat som det ville gjort når vi trykket på enter-tasten etter å ha skrevet inn søkeverdiene.

Denne metoden for å klikke buttosn fungerer ikke bare med knapper, den fungerer også med lenker.

Ta skjermbilder

Du leste riktig! Du kan ta skjermbilder ved hjelp av selen, og det er like enkelt som de forrige avsnittene.

Det vi skal gjøre er å kalle save_screenshot metode på driverobjektet, vil vi deretter sende inn navnet på bildet og skjermbildet vil bli tatt.

>>> sjåfør.save_screenshot ("Planet-earth.png ")

Forsikre deg om at navnet på bildet har en .png-utvidelse, ellers kan du ende opp med et ødelagt bilde.

Når du er ferdig med operasjonene, kan du lukke nettleseren ved å kjøre følgende kode:

>>> sjåfør.Lukk()

Konklusjon

Selen er kjent som et veldig kraftig verktøy, og å kunne bruke det blir ansett som en viktig ferdighet for automatiseringstestere. Selen kan gjøre mye mer enn diskutert i denne artikkelen, tastaturbevegelser kan faktisk replikeres som vist med Nøkler.KOMME TILBAKE. Hvis du ønsker å lære mer om selen, kan du sjekke det dokumentasjon, det er ganske klart og enkelt å bruke.

Hvordan vise OSD-overlegg i fullskjerm Linux-apper og spill
Å spille fullskjermspill eller bruke apper i distraksjonsfri fullskjermmodus kan avskrekke deg fra relevant systeminformasjon som er synlig i et panel...
Topp 5 spillfangstkort
Vi har alle sett og elsket streaming av spill på YouTube. PewDiePie, Jakesepticye og Markiplier er bare noen av de beste spillerne som har tjent milli...
Hvordan utvikle et spill på Linux
For et tiår siden ville ikke mange Linux-brukere forutsi at deres favorittoperativsystem en dag ville være en populær spillplattform for kommersielle ...