Bruker Selenium med Firefox -sjåfør

Bruker Selenium med Firefox -sjåfør
Selen er et flott verktøy for nettlesertesting, nettautomatisering og skraping av nettet. Selen kan kontrollere de fleste av de moderne nettleserne. 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 tilbyr nettdriverprogramvaren for nettleserne sine.

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

I denne artikkelen skal jeg vise deg hvordan du konfigurerer Selenium for å kjøre nettleserprøver, nettautomatisering, webskrapingsoppgaver ved hjelp av Mozilla Firefox nettleser. Så la oss komme i gang.

Forutsetninger:

For å prøve ut kommandoene og eksemplene på 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. Sørg for å sjekke dem ut hvis du trenger hjelp.

Forbereder Python 3 Virtual Environment for prosjektet:

Python Virtual Environment brukes til å lage en isolert Python -prosjektkatalog. Python -modulene du installerer ved hjelp av PIP vil bare bli 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/ følgende:

$ CD Selenium-Firefox/

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

$ virtualenv .Venv

Python Virtual Environment bør opprettes i prosjektkatalogen din.

Aktiver Python Virtual Environment fra prosjektkatalogen din med følgende kommando:

$ kilde .env/bin/aktiverer

Installere Selenium Python Library:

Selenium Library 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 -sjåføren, besøk GitHub -utgivelsessiden til Mozilla/Geckodriver fra din favoritt nettleser.

Som du ser, v0.26.0 er den siste versjonen av Firefox Gecko Driver på dette tidspunktet.

For å laste ned Firefox Gecko Driver, bla litt ned og klikk på Linux Geckodriver Tar.GZ -arkivet avhengig av operativsystemarkitekturen.

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 skal be deg om å lagre arkivet. Plukke ut Lagre filen og klikk på Ok.

Firefox Gecko -sjåføren skal lastes ned.

Firefox Gecko Driver Archive 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/gekkodriver -v0.26.0-Linux64.tjære.GZ -C -drivere/

Når Firefox Gecko Driver Archive er trukket ut, en ny binær fil Geckodriver skal opprettes i drivere/ Katalog for prosjektet ditt, som du kan se på skjermdumpen nedenfor.

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

I denne delen skal jeg vise deg hvordan du kan sette opp ditt aller første Selenium Python -skript for å teste om Firefox Gecko -sjåføren fungerer.

Lag først et nytt Python -skript ex00.py I prosjektkatalogen og skriv inn følgende linjer i den.

Fra Selenium Import WebDriver
fra Selenium.Webdriver.felles.nøkler importerer nøkler
nettleser = webdriver.Firefox (kjørbar_path = "./drivere/gekkodriver ")
nettleser.få ('https: // www.Linuxhint.com ')
Print ('Tittel: % s' % nettleser.tittel)
nettleser.slutte()

Når du er ferdig, spar ex00.py Python -manus.

Linje 1 og 2 importerer alle nødvendige komponenter fra Selen Python Library.

Linje 4 Oppretter et Firefox Web Driver -objekt ved hjelp av Webdriver.Firefox () metode og lagrer den i en nettleser variabel. De kjørbar_path Argument brukes til å fortelle webdriveren hvor de skal lete etter Firefox Gecko Driver Binary. I dette tilfellet Geckodriver binær fra drivere/ Katalogen til prosjektet.

På linje 6, nettleser.få() Metoden lastes opp Linuxhint.com I en Firefox nettleser.

Når nettstedet er ferdig med lasting, skriver linje 7 ut tittelen på nettstedet, her, nettleser.tittel Eiendom 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

Selenium skal åpne en Firefox nettleser og besøke Linuxhint.com nettsted automatisk.

Når siden har lastet inn, skal den skrive ut nettstedstittelen på konsollen, og nettleseren skal lukkes automatisk.

Så Selenium fungerer riktig med Firefox Gecko -sjåføren.

Eksempel 01: Kjøre Firefox i hodeløs modus ved hjelp av selen

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

Lag først et nytt Python -skript EX01.py I prosjektkatalogen din og skriv inn følgende koder i den.

Fra Selenium Import WebDriver
fra Selenium.Webdriver.Firefox.alternativer importalternativer
fra Selenium.Webdriver.felles.nøkler importerer nøkler
FirefoxOptions = Alternativer ()
Firefoxoptions.add_argument ("-headless")
nettleser = webdriver.Firefox (kjørbar_path = "./Drivere/Geckodriver ", Alternativer = FirefoxOptions)
nettleser.få ('https: // www.Linuxhint.com ')
Print ('Tittel: % s' % nettleser.tittel)
nettleser.slutte()

Når du er ferdig, kan du lagre EX01.py Python -manus.

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

Linje 2 importerer Firefox Alternativer fra Selen bibliotek.

Linje 5 oppretter et Firefox Option -objekt og lagrer det i Firefoxoptions variabel.

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

På linje 8, alternativer Argument brukes til å passere Firefoxoptions Mens du initialiserer Firefox Web -driveren ved å bruke Webdriver.Firefox () metode.

Resten av linjene til EX01.py manus er det samme som ex00.py.

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

$ Python3 EX01.py

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

Som du ser jobber Selenium også med et Ubuntu Headless Miljø der jeg ikke har noe grafisk brukergrensesnitt installert.

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

Du kan finne alle de støttede Firefox -kommandolinjeflaggene/alternativene i kommandolinjealternativene - Mozilla | MDN -side.

Eksempel 02: Ekstrahering av Lorem Ipsum ved hjelp av selen

I dette avsnittet skal jeg vise deg hvordan du gjør grunnleggende nettverk ved hjelp av Selenium Firefox Gecko Driver.

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

Før du begynner å hente ut informasjon fra en webside, må du kjenne HTML -strukturen på 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 merket på skjermbildet nedenfor.

Hopp over første avsnitt, som vist på skjermdumpen nedenfor. Trykk deretter på venstre museknapp (LMB) for å velge den.

HTML -strukturen til avsnittet skal vises i Undersøke Tab of the Firefox Developer Tool. Som du kan se, er de genererte Lorem ipsum -avsnittene inne i en div tag som har id Lipsum.

For å hente ut Lorem Ipsum -avsnitt ved hjelp av Selenium Firefox Gecko Driver, oppretter du et nytt Python -skript EX02.py I prosjektkatalogen din og skriv inn følgende koder i den.

Fra Selenium Import WebDriver
fra Selenium.Webdriver.Firefox.alternativer importalternativer
fra Selenium.Webdriver.felles.nøkler importerer nøkler
FirefoxOptions = Alternativer ()
Firefoxoptions.add_argument ("-headless")
nettleser = webdriver.Firefox (kjørbar_path = "./Drivere/Geckodriver ", Alternativer = FirefoxOptions)
nettleser.få ('https: // www.Lipsum.com/feed/html ')
Lipsum = nettleser.find_element_by_id ('lipsum')
trykk (Lipsum.tekst)
nettleser.slutte()

Når du er ferdig, kan du lagre EX02.py Python -manus.

Linje 10 laster Lorem Ipsum Generator -siden ved hjelp av nettleser.få() metode.

Lorem Ipsum -innholdet er inne i en div Tag med ID Lipsum. Linje 12 bruker nettleser.find_element_by_id () metode for å velge den fra websiden og lagre den i Lipsum variabel.

Linje 13 Skriver ut det genererte Lorem Ipsum -innholdet på konsollen. Her, The tekst Eiendom brukes til å få tilgang til innholdet i div element med ID Lipsum.

Kjør nå Python -skriptet EX02.py følgende:

$ Python3 EX02.py

Som du ser hentet Selenium Lorem Ipsum -innholdet fra websiden riktig.

Kjører Python -skriptet EX02.py Igjen vil gi deg en annen utgang, som du kan se på skjermdumpen nedenfor.

Eksempel 03: Utløpende listedata ved hjelp av selen

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

Først, besøk den tilfeldige navnegeneratoren.Info fra Firefox nettleser. Dette nettstedet vil generere 10 tilfeldige navn hver gang du laster inn siden, som du kan se på skjermbildet nedenfor. Målet vårt er å hente ut disse tilfeldige navnene ved hjelp av selen i hodeløs modus.

For å finne ut listenes 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 merket på skjermbildet nedenfor.

Sopp deretter over listen over Tilfeldige navn. Listen skal fremheves som merket på skjermdumpen nedenfor. Trykk deretter på venstre museknapp (LMB) for å velge listen.

HTML -koden på listen skal fremheves i Inspektør Tab of the Firefox Developer Tool. Her er listen over tilfeldige navn inni en 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, hvert av navnene er i en li element.

Fra dette kan vi si det for å komme til li Tagger, vi må følge div.Resultater> ol.Namelist> Li

Så vår CSS -velger vil være div.Resultater ol.Namelist Li (Bare bytt ut > tegn med hvitrommet)

For å trekke ut disse tilfeldige navnene, oppretter du et nytt Python -skript EX03.py og skriv inn følgende koder i den.

Fra Selenium Import WebDriver
fra Selenium.Webdriver.Firefox.alternativer importalternativer
fra Selenium.Webdriver.felles.nøkler importerer nøkler
FirefoxOptions = Alternativer ()
Firefoxoptions.add_argument ("-headless")
nettleser = webdriver.Firefox (kjørbar_path = "./Drivere/Geckodriver ", Alternativer = FirefoxOptions)
nettleser.få ("http: // tilfeldig-navn-generator.info/")
Namelist = nettleser.find_elements_by_css_selector ('div.Resultater ol.namelist li ')
For navn i Namelist:
trykk (navn.tekst)
nettleser.slutte()

Når du er ferdig, kan du lagre EX03.py Python -manus.

Linje 10 laster inn nettstedet Random Name Generator 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.Namelist Li For å finne navnelisten. Deretter lagres navnelisten i navneliste variabel.

I linje 13 og 14, a til sløyfe er vant til å iterere gjennom navneliste liste over li elementer. I hver iterasjon er innholdet i li elementet skrives ut på konsollen.

Kjør nå Python -skriptet EX03.py følgende:

$ Python3 EX03.py

Som du ser, Python -skriptet EX03.py hentet alle tilfeldige navnene fra websiden.

Hvis du kjører skriptet en gang til, bør 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 hjelp av Firefox -nettleseren. Du skal kunne sette opp et Selenium Firefox Gecko Driver Project ganske enkelt og kjøre nettlesertestene, nettautomatisering og skrapingsoppgaver for nettet.