Selen

Använda Selenium med Firefox Driver

Använda Selenium med Firefox Driver
Selen är ett utmärkt verktyg för webbläsartestning, webbautomation och webbskrapning. Selen kan styra de flesta moderna webbläsare. i.e., Firefox, Chrome, Chromium, Opera, Apple Safari. För att kontrollera en webbläsare behöver Selenium ett verktyg som heter Webdriver. De flesta av de moderna webbläsarleverantörerna tillhandahåller programvaran för webbdrivrutiner för sina webbläsare.

För att styra webbläsaren Mozilla Firefox från Selenium måste du använda Gecko Web Driver.

I den här artikeln ska jag visa dig hur du ställer in Selenium för att köra webbläsartester, webbautomation, webbskrapningsuppgifter med Mozilla Firefox webbläsare. Så, låt oss komma igång.

Förutsättningar:

För att prova kommandon och exempel på den här artikeln måste du ha,

1) En Linux-distribution (helst Ubuntu) installerad på din dator.
2) Python 3 installerad på din dator.
3) PIP 3 installerad på din dator.
4) Mozilla Firefox installerad på din dator.

Du kan hitta många artiklar om dessa ämnen på LinuxHint.com. Var noga med att kolla in dem om du behöver hjälp.

Förbereder Python 3 Virtual Environment för projektet:

Python Virtual Environment används för att skapa en isolerad Python-projektkatalog. Python-modulerna som du installerar med PIP installeras endast i projektkatalogen, inte globalt.

Pytonorm virtualenv modulen används för att hantera virtuella Python-miljöer.

Du kan installera Python virtualenv modul globalt med PIP 3 enligt följande:

$ sudo pip3 installera virtualenv

Pytonorm virtualenv bör installeras.

Skapa en projektkatalog selen-firefox / i din nuvarande arbetskatalog enligt följande:

$ mkdir -pv selen-firefox / drivrutiner

Navigera till din nyskapade projektkatalog selen-firefox / som följer:

$ cd selen-firefox /

Skapa en virtuell Python-miljö i din projektkatalog med följande kommando:

$ virtualenv .venv

Python virtuell miljö bör skapas i din projektkatalog.

Aktivera den virtuella Python-miljön från din projektkatalog med följande kommando:

$ källa .env / bin / aktivera

Installera Selenium Python Library:

Selenbibliotek finns tillgängligt i det officiella Python PyPI-förvaret.

Du kan installera Selenium Python-biblioteket med PIP 3 enligt följande:

$ pip3 installera selen

Selenium Python-biblioteket ska installeras.

Installera Firefox Gecko-drivrutin:

För att ladda ner Firefox Gecko Driver, besök GitHub-utgivningssidan för mozilla / geckodriver från din favoritwebbläsare.

Som du kan se, v0.26.0 är den senaste versionen av Firefox Gecko Driver när detta skrivs.

För att ladda ner Firefox Gecko Driver, bläddra ner lite och klicka på Linux geckodriver tar.gz-arkiv beroende på operativsystemets arkitektur.

Om du använder ett 32-bitars operativsystem, klicka på geckodriver-v0.26.0-linux32.tjära.gz länk.

Om du använder ett 64-bitars operativsystem, klicka på geckodriver-v0.26.0-linuxx64.tjära.gz länk.

Jag laddar ner 64-bitarsversionen av Firefox Gecko Driver.

Din webbläsare bör uppmana dig att spara arkivet. Välj Spara fil och klicka på OK.

Firefox Gecko-drivrutinen ska laddas ner.

Firefox Gecko-drivrutinsarkivet bör laddas ner i ~ / Nedladdningar katalog.

Du kan extrahera geckodriver-v0.26.0-linux64.tjära.gz arkiv från ~ / Nedladdningar katalog till förare / katalog över ditt projekt med följande kommando:

$ tar -xzf ~ / Nedladdningar / geckodriver-v0.26.0-linux64.tjära.gz -C drivrutiner /

När Firefox Gecko Driver-arkiv har extraherats, en ny binär fil geckodriver bör skapas i förare / katalog över ditt projekt, som du kan se på skärmdumpen nedan.

Komma igång med Selen med Firefox Gecko Driver:

I det här avsnittet ska jag visa dig hur du ställer in ditt allra första Selenium Python-skript för att testa om Firefox Gecko Driver fungerar.

Skapa först ett nytt Python-skript ex00.py i din projektkatalog och skriv in följande rader i den.

från selenimportwebdriver
från selen.webbdrivare.allmänning.nycklar importerar nycklar
webbläsare = webdriver.Firefox (executable_path = "./ drivrutiner / geckodriver ")
webbläsare.få ('https: // www.linuxhint.com ')
skriv ut ('Titel:% s'% webbläsare.titel)
webbläsare.sluta()

När du är klar sparar du ex00.py Python-skript.

Rad 1 och 2 importerar alla nödvändiga komponenter från selen Python-bibliotek.

Linje 4 skapar ett Firefox-webbdrivrutinobjekt med hjälp av webbdrivare.Firefox () metod och lagrar den i en webbläsare variabel. De körbar väg argument används för att berätta för webbdrivrutinen var du ska leta efter Firefox Gecko Driver binär. I det här fallet geckodriver binär från förare / projektkatalogen.

På rad 6, webbläsare.skaffa sig() metoden laddas upp linuxhint.com i en Firefox-webbläsare.

När webbplatsen är laddad, skriver rad 7 ut webbplatsens titel, här, webbläsare.titel egendom används för att komma åt titeln på webbplatsen.

Rad 8 stänger Firefox-webbläsaren med webbläsare.sluta() metod.

Du kan köra Python-skriptet ex00.py med följande kommando:

$ python3 ex00.py

Selen bör öppna en webbläsare i Firefox och besöka linuxhint.com webbplats automatiskt.

När sidan har lästs in ska den skriva ut webbplatsens titel på konsolen och webbläsaren ska stängas automatiskt.

Så, Selenium fungerar korrekt med Firefox Gecko-drivrutinen.

Exempel 01: Köra Firefox i Headless Mode med Selenium

Du kan också köra Selenium med Firefox Gecko Driver i huvudlöst läge. Selenium Firefox headless-läge kräver inget grafiskt användargränssnitt installerat på din dator. Så du kommer att kunna köra Selenium Firefox på alla Linux-huvudlösa servrar.

Skapa först ett nytt Python-skript ex01.py i din projektkatalog och skriv in följande rader med koder i den.

från selenimportwebdriver
från selen.webbdrivare.Firefox.alternativ importalternativ
från selen.webbdrivare.allmänning.nycklar importerar nycklar
firefoxOptions = Alternativ ()
firefoxalternativ.add_argument ("- headless")
webbläsare = webdriver.Firefox (executable_path = "./ drivers / geckodriver ", optioner = firefoxOptions)
webbläsare.få ('https: // www.linuxhint.com ')
skriv ut ('Titel:% s'% webbläsare.titel)
webbläsare.sluta()

När du är klar sparar du ex01.py Python-skript.

Rad 1 och rad 3 är samma som rad 1 och rad 2 av ex00.py Python-skript.

Rad 2 importerar Firefox alternativ från selen bibliotek.

Rad 5 skapar ett Firefox-objekt för objekt och lagrar det i firefoxalternativ variabel.

Linje 6 använder firefoxalternativ.add_argument () metod för att lägga till -huvudlös Firefox-kommandoradsflagga till firefoxalternativ objekt.

På rad 8, alternativ argument används för att skicka firefoxalternativ medan du initierar Firefox-webbdrivrutinen med webbdrivare.Firefox () metod.

Resten av raderna i ex01.py skriptet är detsamma som ex00.py.

Du kan köra Python-skriptet ex01.py med följande kommando:

$ python3 ex01.py

Som du kan se titeln på webbplatsen (linuxhint.com) skrivs ut på konsolen utan att någon grafisk version av Firefox-webbläsaren öppnas.

Som du kan se arbetar Selenium också på en Ubuntu-huvudlös miljö där jag inte har något grafiskt användargränssnitt installerat.

Nu när du vet hur du skickar -huvudlös Firefox-kommandoradsflagga / -alternativ med Selenium Firefox Gecko-drivrutin, du kan också skicka alla andra Firefox-kommandoradsflaggor / -alternativ.

Du hittar alla stödda Firefox-kommandoradsflaggor / alternativ i kommandoradsalternativen - Mozilla | MDN-sida.

Exempel 02: Extrahera Lorem Ipsum med användning av selen

I det här avsnittet ska jag visa dig hur man gör grundläggande webbskrotning med Selenium Firefox Gecko Driver.

Besök först Lorem Ipsum Generator-sidan från Firefox-webbläsaren. Som du kan se genererade sidan 5 slumpmässiga stycken. Låt oss extrahera all genererad text (alla 5 styckena) från den här sidan.

Innan du börjar extrahera information från en webbsida måste du känna till HTML-strukturen för innehållet på webbsidan.

Du kan enkelt hitta HTML-strukturen för det innehåll du vill extrahera med hjälp av Firefox Developer Tool. Att öppna Firefox Developer Tool, tryck på höger musknapp (RMB) på sidan och klicka på Inspektera element (Q).

Firefox Developer Tool bör öppnas. Klicka på Inspektera ikonen () som markerat i skärmdumpen nedan.

Håll muspekaren över första stycket, som visas på skärmdumpen nedan. Tryck sedan på vänster musknapp (LMB) för att välja den.

Styckenas HTML-struktur bör visas i Inspektera fliken i Firefox Developer Tool. Som du kan se finns de genererade lorem ipsum-styckena i en div tagg som har id läppsumma.

Skapa ett nytt Python-skript för att extrahera lorem ipsum-styckena med Selenium Firefox Gecko Driver ex02.py i din projektkatalog och skriv in följande rader med koder i den.

från selenimportwebdriver
från selen.webbdrivare.Firefox.alternativ importalternativ
från selen.webbdrivare.allmänning.nycklar importerar nycklar
firefoxOptions = Alternativ ()
firefoxalternativ.add_argument ("- headless")
webbläsare = webdriver.Firefox (executable_path = "./ drivers / geckodriver ", optioner = firefoxOptions)
webbläsare.få ('https: // www.läppsumma.com / feed / html ')
lipsum = webbläsare.find_element_by_id ('lipsum')
tryck (lipsum.text)
webbläsare.sluta()

När du är klar sparar du ex02.py Python-skript.

Rad 10 laddar sidan med lorem ipsum-generatorn med hjälp av webbläsare.skaffa sig() metod.

Innehållet på lorem ipsum finns i en div tagg med id läppsumma. Linje 12 använder webbläsare.find_element_by_id () metod för att välja den från webbsidan och lagra den i läppsumma variabel.

Rad 13 skriver ut det genererade lorem ipsum-innehållet på konsolen. Här, den text används för att komma åt innehållet i div element med id läppsumma.

Kör nu Python-skriptet ex02.py som följer:

$ python3 ex02.py

Som du kan se, extraherade Selen lorem ipsum-innehållet korrekt från webbsidan.

Kör Python-skriptet ex02.py igen ger dig en annan utgång, som du kan se på skärmdumpen nedan.

Exempel 03: Extrahera listdata med hjälp av selen

I det här avsnittet ska jag visa dig ett exempel på data för webbskrotning från en webbplats med Selenium Firefox Gecko-drivrutin i huvudlöst läge.

Besök först random-name-generator.info från webbläsaren Firefox. Denna webbplats genererar 10 slumpmässiga namn varje gång du laddar om sidan, som du kan se på skärmdumpen nedan. Vårt mål är att extrahera dessa slumpmässiga namn med Selen i headless-läge.

För att ta reda på listans HTML-struktur måste du öppna Firefox Developer Tool. För att göra det, tryck på höger musknapp (RMB) på sidan och klicka på Inspektera element (Q).

Firefox Developer Tool bör öppnas. Klicka på Inspektera ikonen () som markerat i skärmdumpen nedan.

Håll sedan muspekaren över listan över Slumpmässiga namn. Listan ska markeras som markerad i skärmdumpen nedan. Tryck sedan på vänster musknapp (LMB) för att välja listan.

HTML-koden i listan bör markeras i Inspektör fliken i Firefox Developer Tool. Här finns listan över slumpmässiga namn i en div element. De div elementet har klass namn resultat. Inuti den har vi en ol element med klass namn namnlista. Inuti ol element, är vart och ett av namnen i en li element.

Från detta kan vi säga att för att komma till li taggar, måste vi följa div.resultat> ol.namnlista> li

Så kommer vår CSS-väljare att vara div.resultat ol.namnLista li (byt bara ut > tecken med blanksteg)

Skapa ett nytt Python-skript för att extrahera dessa slumpmässiga namn ex03.py och skriv in följande rader med koder i den.

från selenimportwebdriver
från selen.webbdrivare.Firefox.alternativ importalternativ
från selen.webbdrivare.allmänning.nycklar importerar nycklar
firefoxOptions = Alternativ ()
firefoxalternativ.add_argument ("- headless")
webbläsare = webdriver.Firefox (executable_path = "./ drivers / geckodriver ", optioner = firefoxOptions)
webbläsare.get ("http: // random-name-generator.info/")
nameList = webbläsare.find_elements_by_css_selector ('div.resultat ol.nameList li ')
för namn i namnLista:
Skriv namn.text)
webbläsare.sluta()

När du är klar sparar du ex03.py Python-skript.

Rad 10 laddar webbplatsen för slumpmässiga namngeneratorer med hjälp av webbläsare.skaffa sig() metod.

Rad 11 väljer namnlistan med webbläsare.find_elements_by_css_selector () metod. Denna metod använder CSS-väljaren div.resultat ol.namnLista li för att hitta namnlistan. Sedan sparas namnlistan i namnlista variabel.

I rad 13 och 14, a för loop används för att iterera genom namnlista lista av li element. I varje iteration, innehållet i li elementet skrivs ut på konsolen.

Kör nu Python-skriptet ex03.py som följer:

$ python3 ex03.py

Som du kan se, Python-skriptet ex03.py hämtade alla slumpmässiga namn från webbsidan.

Om du kör skriptet en andra gång ska det returnera en ny lista med slumpmässiga namn, som du kan se på skärmdumpen nedan.

Slutsats:

Den här artikeln ska hjälpa dig att komma igång med Selenium med Firefox-webbläsaren. Du borde kunna ställa in ett Selenium Firefox Gecko-drivrutinsprojekt ganska enkelt och köra dina webbläsartester, webbautomatisering och webbskrapning.

Bästa spel att spela med handspårning
Oculus Quest introducerade nyligen den fantastiska idén om handspårning utan kontroller. Med ett ständigt ökande antal spel och aktiviteter som utför ...
Hur man visar OSD-överlägg i helskärms Linux-appar och -spel
Att spela helskärmsspel eller använda appar i distraktionsfritt helskärmsläge kan avskärma dig från relevant systeminformation som syns i en panel ell...
Topp 5 spelinspelningskort
Vi har alla sett och älskat streaming av spel på YouTube. PewDiePie, Jakesepticye och Markiplier är bara några av de bästa spelarna som har tjänat mil...