Selen

Bruker Selenium med Firefox Driver

Bruker Selenium med Firefox Driver
Selen er et flott verktøy for nettlesertesting, nettautomatisering og nettskraping. Selen kan kontrollere de fleste moderne nettlesere. Jeg.e., Firefox, Chrome, Chromium, Opera, Apple Safari. For å kontrollere en nettleser trenger Selenium et verktøy som heter Web driver. De fleste av de moderne nettleserleverandørene leverer programvaren for nettdrivere for nettleserne.

For å kontrollere Mozilla Firefox-nettleseren fra Selenium, må du bruke Gecko Web Driver.

I denne artikkelen skal jeg vise deg hvordan du setter opp Selenium for å kjøre nettlesertester, nettautomatisering, nettskrapingsoppgaver ved hjelp av Mozilla Firefox nettleser. Så la oss komme i gang.

Forutsetninger:

For å prøve kommandoene og eksemplene til denne artikkelen må du ha,

1) En Linux-distribusjon (helst Ubuntu) installert på datamaskinen din.
2) Python 3 installert på datamaskinen din.
3) PIP 3 installert på datamaskinen din.
4) Mozilla Firefox installert på datamaskinen din.

Du kan finne mange artikler om disse emnene på LinuxHint.com. Husk å sjekke dem ut hvis du trenger hjelp.

Klargjøre Python 3 Virtual Environment for prosjektet:

Python Virtual Environment brukes til å lage en isolert Python-prosjektkatalog. Python-modulene du installerer ved hjelp av PIP, blir bare installert i prosjektkatalogen, ikke globalt.

Python virtualenv modul brukes til å administrere Python virtuelle miljøer.

Du kan installere Python virtualenv modul globalt ved hjelp av PIP 3 som følger:

$ sudo pip3 installer virtualenv

Python virtualenv skal installeres.

Lag en prosjektkatalog selen-firefox / i din nåværende arbeidskatalog som følger:

$ mkdir -pv selen-firefox / drivere

Naviger til den nyopprettede prosjektkatalogen selen-firefox / som følger:

$ cd selen-firefox /

Opprett et virtuelt Python-miljø i prosjektkatalogen din med følgende kommando:

$ virtualenv .venv

Python virtuelt miljø skal opprettes i prosjektkatalogen din.

Aktiver det virtuelle Python-miljøet fra prosjektkatalogen din med følgende kommando:

$ kilde .env / bin / aktivere

Installere Selenium Python Library:

Selenium-biblioteket er tilgjengelig i det offisielle Python PyPI-depotet.

Du kan installere Selenium Python-biblioteket ved hjelp av PIP 3 som følger:

$ pip3 installer selen

Selenium Python-biblioteket skal installeres.

Installere Firefox Gecko Driver:

For å laste ned Firefox Gecko Driver, besøk GitHub utgivelsessiden til mozilla / geckodriver fra din favoritt nettleser.

Som du kan se, v0.26.0 er den siste versjonen av Firefox Gecko Driver når dette skrives.

For å laste ned Firefox Gecko Driver, rull ned litt og klikk på Linux geckodriver tar.gz arkiv avhengig av operativsystemets arkitektur.

Hvis du bruker et 32-biters operativsystem, klikker du på geckodriver-v0.26.0-linux32.tjære.gz lenke.

Hvis du bruker et 64-biters operativsystem, klikker du på geckodriver-v0.26.0-linuxx64.tjære.gz lenke.

Jeg vil laste ned 64-biters versjonen av Firefox Gecko Driver.

Nettleseren din bør be deg om å lagre arkivet. Å velge Lagre filen og klikk på OK.

Firefox Gecko-driveren skal lastes ned.

Firefox Gecko Driver-arkivet skal lastes ned i ~ / Nedlastinger katalog.

Du kan trekke ut geckodriver-v0.26.0-linux64.tjære.gz arkiv fra ~ / Nedlastinger katalog til drivere / katalog for prosjektet ditt med følgende kommando:

$ tar -xzf ~ / Nedlastinger / geckodriver-v0.26.0-linux64.tjære.gz -C drivere /

Når Firefox Gecko Driver-arkivet er hentet, en ny binær fil geckodriver skal opprettes i drivere / katalog av prosjektet ditt, som du kan se på skjermbildet nedenfor.

Komme i gang med Selen ved hjelp av Firefox Gecko Driver:

I denne delen skal jeg vise deg hvordan du konfigurerer ditt aller første Selenium Python-skript for å teste om Firefox Gecko-driveren fungerer.

Først oppretter du et nytt Python-skript ex00.py i prosjektkatalogen og skriv inn følgende linjer i den.

fra selen import webdriver
fra selen.webdriver.felles.nøkler importerer nøkler
nettleser = webdriver.Firefox (executable_path = "./ drivere / geckodriver ")
nettleser.få ('https: // www.linuxhint.com ')
skriv ut ('Tittel:% s'% nettleser.tittel)
nettleser.slutte()

Når du er ferdig, lagre ex00.py Python-skript.

Linje 1 og 2 importerer alle nødvendige komponenter fra selen Python-bibliotek.

Linje 4 lager et Firefox-webdriverobjekt ved hjelp av webdriver.Firefox () metode og lagrer den i en nettleser variabel. De kjørbar sti argumentet brukes til å fortelle nettdriveren hvor du skal lete etter Firefox Gecko Driver binær. I dette tilfellet vil geckodriver binær fra drivere / katalog av prosjektet.

På linje 6, nettleser.få() metoden lastes opp linuxhint.com i en Firefox-nettleser.

Når nettstedet er lastet inn, skriver linje 7 ut tittelen på nettstedet, her, nettleser.tittel eiendommen brukes til å få tilgang til tittelen på nettstedet.

Linje 8 lukker Firefox-nettleseren ved hjelp av nettleser.slutte() metode.

Du kan kjøre Python-skriptet ex00.py med følgende kommando:

$ python3 ex00.py

Selen bør åpne en Firefox-nettleser og besøke linuxhint.com nettsted automatisk.

Når siden er lastet, skal den skrive ut tittelen på nettstedet på konsollen, og nettleseren skal lukkes automatisk.

Så, Selenium fungerer riktig med Firefox Gecko-driveren.

Eksempel 01: Kjører Firefox i hodeløs modus ved bruk av Selen

Du kan også kjøre Selenium med Firefox Gecko Driver i hodeløs modus. Selenium Firefox headless-modus krever ikke noe grafisk brukergrensesnitt installert på datamaskinen din. Så du vil kunne kjøre Selenium Firefox på alle Linux-hodeløse servere.

Først oppretter du et nytt Python-skript ex01.py i prosjektkatalogen din og skriv inn følgende kodelinjer i den.

fra selen import webdriver
fra selen.webdriver.Firefox.alternativer importere Alternativer
fra selen.webdriver.felles.nøkler importerer nøkler
firefoxOptions = Alternativer ()
firefoxAlternativer.add_argument ("- headless")
nettleser = webdriver.Firefox (executable_path = "./ drivers / geckodriver ", options = firefoxOptions)
nettleser.få ('https: // www.linuxhint.com ')
skriv ut ('Tittel:% s'% nettleser.tittel)
nettleser.slutte()

Når du er ferdig, lagrer du ex01.py Python-skript.

Linje 1 og linje 3 er de samme som linje 1 og linje 2 av ex00.py Python-skript.

Linje 2 importerer Firefox Alternativer fra selen bibliotek.

Linje 5 oppretter et firefox Options-objekt og lagrer det i firefoxAlternativer variabel.

Linje 6 bruker firefoxAlternativer.add_argument () metode for å legge til -hodeløs Firefox kommandolinjeflagg til firefoxAlternativer gjenstand.

På linje 8, alternativer argumentet brukes til å passere firefoxAlternativer mens du initialiserer Firefox-nettdriveren ved hjelp av webdriver.Firefox () metode.

Resten av linjene i ex01.py skriptet er det samme som ex00.py.

Du kan kjøre Python-skriptet ex01.py med følgende kommando:

$ python3 ex01.py

Som du kan se, tittelen på nettstedet (linuxhint.com) skrives ut på konsollen uten å åpne noen grafisk versjon av Firefox-nettleseren.

Som du kan se, jobber Selenium også med et hodeløst Ubuntu-miljø der jeg ikke har noe grafisk brukergrensesnitt installert.

Nå som du vet hvordan du skal passere -hodeløs Firefox kommandolinjeflagg / alternativ ved bruk av Selenium Firefox Gecko-driveren, du kan også passere andre Firefox-kommandolinjeflagg / -alternativer.

Du finner alle støttede Firefox-kommandolinjeflagg / -alternativer i kommandolinjealternativene - Mozilla | MDN-side.

Eksempel 02: Ekstraksjon av Lorem Ipsum ved bruk av selen

I denne delen skal jeg vise deg hvordan du gjør grunnleggende nettskraping ved hjelp av Selenium Firefox Gecko Driver.

Gå først til siden Lorem Ipsum Generator fra Firefox-nettleseren. Som du ser, genererte siden 5 tilfeldige avsnitt. La oss trekke ut all den genererte teksten (alle 5 avsnittene) fra denne siden.

Før du begynner å hente ut informasjon fra en webside, må du kjenne HTML-strukturen til innholdet på websiden.

Du kan enkelt finne HTML-strukturen til innholdet du vil trekke ut ved hjelp av Firefox Developer Tool. Å åpne Firefox Developer Tool, trykk på høyre museknapp (RMB) på siden og klikk på Inspiser element (Q).

Firefox Developer Tool skal åpnes. Klikk på Inspiser ikonet () som markert i skjermbildet nedenfor.

Hold markøren over første avsnitt, som vist på skjermbildet nedenfor. Trykk deretter på venstre museknapp (LMB) for å velge den.

HTML-strukturen til avsnittene skal vises i Undersøke fanen i Firefox Developer Tool. Som du kan se, er de genererte lorem ipsum-avsnittene inne i a div tag som har id leppesum.

For å trekke ut lorem ipsum-avsnittene ved hjelp av Selenium Firefox Gecko Driver, oppretter du et nytt Python-skript ex02.py i prosjektkatalogen din og skriv inn følgende kodelinjer i den.

fra selen import webdriver
fra selen.webdriver.Firefox.alternativer importere Alternativer
fra selen.webdriver.felles.nøkler importerer nøkler
firefoxOptions = Alternativer ()
firefoxAlternativer.add_argument ("- headless")
nettleser = webdriver.Firefox (executable_path = "./ drivers / geckodriver ", options = firefoxOptions)
nettleser.få ('https: // www.leppesum.com / feed / html ')
lipsum = nettleser.find_element_by_id ('lipsum')
utskrift (lipsum.tekst)
nettleser.slutte()

Når du er ferdig, lagrer du ex02.py Python-skript.

Linje 10 laster inn lorem ipsum-generator siden ved hjelp av nettleser.få() metode.

Lorem ipsum-innholdet er inne i en div tag med id leppesum. Linje 12 bruker nettleser.find_element_by_id () metoden for å velge den fra websiden og lagre den i leppesum variabel.

Linje 13 skriver ut det genererte lorem ipsum-innholdet på konsollen. Her, den tekst eiendommen brukes til å få tilgang til innholdet i div element med id leppesum.

Kjør nå Python-skriptet ex02.py som følger:

$ python3 ex02.py

Som du kan se, ekstraherte Selen lorem ipsum-innholdet riktig fra nettsiden.

Kjører Python-skriptet ex02.py igjen vil gi deg en annen utgang, som du kan se på skjermbildet nedenfor.

Eksempel 03: Utpakking av listedata ved bruk av selen

I denne delen skal jeg vise deg et eksempel på data om nettutklipp fra et nettsted ved hjelp av Selenium Firefox Gecko-driver i hodeløs modus.

Først besøker du generatoren for tilfeldige navn.info fra Firefox-nettleseren. Dette nettstedet vil generere 10 tilfeldige navn hver gang du laster inn siden på nytt, som du kan se på skjermbildet nedenfor. Målet vårt er å trekke ut disse tilfeldige navnene ved hjelp av Selen i hodeløs modus.

For å finne ut listens HTML-struktur, må du åpne Firefox Developer Tool. For å gjøre det, trykk på høyre museknapp (RMB) på siden og klikk på Inspiser element (Q).

Firefox Developer Tool skal åpnes. Klikk på Inspiser ikonet () som markert i skjermbildet nedenfor.

Hold deretter markøren over listen over Tilfeldige navn. Listen skal være uthevet som markert i skjermbildet nedenfor. Trykk deretter på venstre museknapp (LMB) for å velge listen.

HTML-koden til listen skal være uthevet i Inspektør fanen i Firefox Developer Tool. Her er listen over tilfeldige navn inne i a div element. De div elementet har klasse Navn resultater. Inne i den har vi en ol element med klasse Navn navneliste. Inne i ol element, er hvert av navnene i en li element.

Fra dette kan vi si at for å komme til li koder, må vi følge div.resultater> ol.navneliste> li

Så, vår CSS-velger vil være div.resultater ol.navneliste li (bare bytt ut > tegn med hvitt mellomrom)

For å trekke ut disse tilfeldige navnene, opprett et nytt Python-skript ex03.py og skriv inn følgende kodelinjer i den.

fra selen import webdriver
fra selen.webdriver.Firefox.alternativer importere Alternativer
fra selen.webdriver.felles.nøkler importerer nøkler
firefoxOptions = Alternativer ()
firefoxAlternativer.add_argument ("- headless")
nettleser = webdriver.Firefox (executable_path = "./ drivers / geckodriver ", options = firefoxOptions)
nettleser.get ("http: // random-name-generator.info / ")
nameList = nettleser.find_elements_by_css_selector ('div.resultater ol.navneliste li ')
for navn i navnListe:
skriv ut (navn.tekst)
nettleser.slutte()

Når du er ferdig, lagrer du ex03.py Python-skript.

Linje 10 laster nettstedet for tilfeldige navnegeneratorer ved hjelp av nettleser.få() metode.

Linje 11 velger navnelisten ved hjelp av nettleser.find_elements_by_css_selector () metode. Denne metoden bruker CSS-velgeren div.resultater ol.navneliste li for å finne navnelisten. Deretter lagres navnelisten i navneliste variabel.

I linje 13 og 14, a til loop brukes til å gjenta gjennom navneliste liste over li elementer. I hver iterasjon, innholdet i li elementet er trykt på konsollen.

Kjør nå Python-skriptet ex03.py som følger:

$ python3 ex03.py

Som du kan se, Python-skriptet ex03.py hentet alle tilfeldige navn fra websiden.

Hvis du kjører skriptet en gang til, skal det returnere en ny liste over tilfeldige navn, som du kan se på skjermbildet nedenfor.

Konklusjon:

Denne artikkelen skal hjelpe deg i gang med Selenium ved å bruke Firefox-nettleseren. Du bør være i stand til å sette opp et Selenium Firefox Gecko-driverprosjekt ganske enkelt og kjøre nettlesertester, nettautomatisering og nettskraping.

Mus Mus venstreklikknapp fungerer ikke på Windows 10
Mus venstreklikknapp fungerer ikke på Windows 10
Hvis du bruker en dedikert mus med den bærbare eller stasjonære datamaskinen, men museklikk-knappen fungerer ikke på Windows 10/8/7 av en eller annen ...
Mus Markøren hopper eller beveger seg tilfeldig mens du skriver inn Windows 10
Markøren hopper eller beveger seg tilfeldig mens du skriver inn Windows 10
Hvis du finner ut at musemarkøren hopper eller beveger seg alene, automatisk, tilfeldig mens du skriver inn Windows-bærbar PC eller datamaskin, kan no...
Mus Hvordan reversere rulle retning for mus og styreplater i Windows 10
Hvordan reversere rulle retning for mus og styreplater i Windows 10
Mus og Pekeplates gjør ikke bare databehandling enkelt, men mer effektivt og mindre tidkrevende. Vi kan ikke forestille oss et liv uten disse enhetene...