Selenium

Selenium gebruiken met Firefox-stuurprogramma

Selenium gebruiken met Firefox-stuurprogramma
Selenium is een geweldige tool voor browsertests, webautomatisering en webscraping. Selenium kan de meeste moderne webbrowsers besturen. ik.e., Firefox, Chrome, Chromium, Opera, Apple Safari. Om een ​​browser te besturen, heeft Selenium een ​​tool nodig met de naam Web driver. De meeste moderne browserleveranciers bieden de webstuurprogrammasoftware voor hun webbrowsers.

Om de Mozilla Firefox-webbrowser vanuit Selenium te bedienen, moet u de Gecko Web Driver gebruiken.

In dit artikel laat ik je zien hoe je Selenium instelt voor het uitvoeren van browsertests, webautomatisering, webschraptaken met behulp van de Mozilla Firefox-webbrowser. Dus laten we beginnen.

Vereisten:

Om de opdrachten en voorbeelden van dit artikel uit te proberen, moet je:,

1) Een Linux-distributie (bij voorkeur Ubuntu) geïnstalleerd op uw computer.
2) Python 3 geïnstalleerd op uw computer.
3) PIP 3 geïnstalleerd op uw computer.
4) Mozilla Firefox geïnstalleerd op uw computer.

Je kunt veel artikelen over deze onderwerpen vinden op LinuxHint.com. Bekijk ze zeker als je hulp nodig hebt.

Python 3 virtuele omgeving voorbereiden voor het project:

Python Virtual Environment wordt gebruikt om een ​​geïsoleerde Python-projectdirectory te maken. De Python-modules die u met PIP installeert, worden alleen in de projectdirectory geïnstalleerd, niet wereldwijd.

Python virtueel module wordt gebruikt om virtuele Python-omgevingen te beheren.

U kunt Python installeren virtueel module wereldwijd met behulp van PIP 3 als volgt:

$ sudo pip3 installeer virtualenv

Python virtueel moet worden geïnstalleerd.

Een projectdirectory maken selenium-firefox/ in uw huidige werkmap als volgt:

$ mkdir -pv selenium-firefox/drivers

Navigeer naar uw nieuw gemaakte projectdirectory selenium-firefox/ als volgt:

$ cd selenium-firefox/

Maak een virtuele Python-omgeving in uw projectdirectory met de volgende opdracht:

$ virtuele omgeving .venv

De virtuele Python-omgeving moet worden gemaakt in uw projectdirectory.

Activeer de virtuele Python-omgeving vanuit uw projectdirectory met de volgende opdracht:

$ bron .env/bin/activeren

Selenium Python-bibliotheek installeren:

Selenium-bibliotheek is beschikbaar in de officiële Python PyPI-repository.

U kunt de Selenium Python-bibliotheek als volgt installeren met PIP 3:

$ pip3 installeer selenium

Selenium Python-bibliotheek moet zijn geïnstalleerd.

Firefox Gecko-stuurprogramma installeren:

Om de Firefox Gecko Driver te downloaden, gaat u vanuit uw favoriete webbrowser naar de GitHub-releasepagina van mozilla/geckodriver.

Zoals je kunt zien, v0.26.0 is de nieuwste versie van Firefox Gecko Driver op het moment van schrijven.

Om de Firefox Gecko Driver te downloaden, scrolt u een klein beetje naar beneden en klikt u op de Linux geckodriver tar.gz-archief, afhankelijk van de architectuur van uw besturingssysteem.

Als u een 32-bits besturingssysteem gebruikt, klikt u op de gekkodriver-v0.26.0-linux32.teer.gz koppeling.

Als u een 64-bits besturingssysteem gebruikt, klikt u op de gekkodriver-v0.26.0-linuxx64.teer.gz koppeling.

Ik zal de 64-bits versie van de Firefox Gecko Driver downloaden.

Uw browser zou u moeten vragen om het archief op te slaan. Selecteer Sla bestand op en klik op OK.

Het Firefox Gecko-stuurprogramma moet worden gedownload.

Het Firefox Gecko Driver-archief moet worden gedownload in de ~/Downloads map.

U kunt de . uitpakken gekkodriver-v0.26.0-linux64.teer.gz archief van de ~/Downloads map naar de chauffeurs/ directory van uw project met het volgende commando:

$ tar -xzf ~/Downloads/geckodriver-v0.26.0-linux64.teer.gz -C-stuurprogramma's/

Zodra het Firefox Gecko Driver-archief is uitgepakt, wordt een nieuw binair bestand gekkobestuurder moet worden gemaakt in de chauffeurs/ directory van uw project, zoals u kunt zien in de onderstaande schermafbeelding.

Aan de slag met Selenium met Firefox Gecko Driver:

In dit gedeelte laat ik u zien hoe u uw allereerste Selenium Python-script instelt om te testen of het Firefox Gecko-stuurprogramma werkt.

Maak eerst een nieuw Python-script ex00.py in uw projectdirectory en typ de volgende regels erin:.

van selenium import webdriver
van selenium.webstuurprogramma.gemeenschappelijk.sleutels importeren Sleutels
browser = webstuurprogramma.Firefox(executable_path="./bestuurders/gekkobestuurder")
browser.get('https://www.linuxhint.com')
print('Titel: %s' % browser.titel)
browser.stoppen()

Als je klaar bent, sla je op ex00.py Python-script.

Regel 1 en 2 importeren alle benodigde componenten uit de selenium Python-bibliotheek.

Regel 4 maakt een Firefox-webstuurprogramma-object met behulp van de webstuurprogramma.Firefox() methode en slaat deze op in a browser variabele. De uitvoerbaar_pad argument wordt gebruikt om het webstuurprogramma te vertellen waar het moet zoeken naar het binaire bestand van Firefox Gecko Driver. In dit geval is de gekkobestuurder binair van de chauffeurs/ map van het project.

Online 6, browser.krijgen() methode laadt op linuxhint.com in een Firefox-webbrowser.

Zodra de website klaar is met laden, drukt regel 7 de titel van de website af, hier, browser.titel eigendom wordt gebruikt om toegang te krijgen tot de titel van de website.

Regel 8 sluit de Firefox-webbrowser met de browser.stoppen() methode.

U kunt het Python-script uitvoeren ex00.py met het volgende commando:

$ python3 ex00.py

Selenium zou een Firefox-webbrowser moeten openen en de linuxhint . moeten bezoeken.com website automatisch.

Zodra de pagina is geladen, moet de titel van de website op de console worden afgedrukt en moet de webbrowser automatisch sluiten.

Selenium werkt dus correct met de Firefox Gecko-driver.

Voorbeeld 01: Firefox uitvoeren in Headless-modus met Selenium

Je kunt Selenium ook uitvoeren met Firefox Gecko Driver in headless-modus. Selenium Firefox headless-modus vereist geen grafische gebruikersinterface die op uw computer is geïnstalleerd. U kunt Selenium Firefox dus op alle headless-servers van Linux gebruiken.

Maak eerst een nieuw Python-script ex01.py in uw projectdirectory en typ de volgende regels codes erin:.

van selenium import webdriver
van selenium.webstuurprogramma.firefox.opties importeren Opties
van selenium.webstuurprogramma.gemeenschappelijk.sleutels importeren Sleutels
firefoxOptions = Opties()
firefoxOpties.add_argument("-headless")
browser = webstuurprogramma.Firefox(executable_path="./drivers/geckodriver", options=firefoxOptions)
browser.get('https://www.linuxhint.com')
print('Titel: %s' % browser.titel)
browser.stoppen()

Als u klaar bent, slaat u de ex01.py Python-script.

Lijn 1 en lijn 3 zijn hetzelfde als lijn 1 en lijn 2 van ex00.py Python-script.

Regel 2 importeert Firefox Opties van de selenium bibliotheek.

Regel 5 maakt een firefox Options-object en slaat het op in de firefoxOpties variabele.

Lijn 6 gebruikt de firefoxOpties.add_argument() methode om de . toe te voegen -zonder hoofd Firefox-opdrachtregelvlag naar de firefoxOpties voorwerp.

Online 8, opties argument wordt gebruikt om de . door te geven firefoxOpties tijdens het initialiseren van het Firefox-webstuurprogramma met behulp van de webstuurprogramma.Firefox() methode.

De rest van de regels van de ex01.py script is hetzelfde als de ex00.py.

U kunt het Python-script uitvoeren ex01.py met het volgende commando:

$ python3 ex01.py

Zoals je kunt zien, is de titel van de website (linuxhint.com) wordt afgedrukt op de console zonder een grafische versie van de Firefox-webbrowser te openen.

Zoals je kunt zien, werkt Selenium ook aan een Ubuntu-headless-omgeving waar ik geen grafische gebruikersinterface heb geïnstalleerd.

Nu je weet hoe je moet slagen voor de -zonder hoofd Firefox-opdrachtregelvlag/optie met behulp van het Selenium Firefox Gecko-stuurprogramma, u kunt ook andere Firefox-opdrachtregelvlaggen/-opties doorgeven.

U kunt alle ondersteunde Firefox-opdrachtregelvlaggen/-opties vinden in de Opdrachtregelopties - Mozilla | MDN-pagina.

Voorbeeld 02: Lorem Ipsum extraheren met selenium

In dit gedeelte laat ik u zien hoe u basiswebscraping kunt uitvoeren met Selenium Firefox Gecko Driver.

Bezoek eerst de Lorem Ipsum Generator-pagina vanuit de Firefox-webbrowser. Zoals je kunt zien, heeft de pagina 5 willekeurige alinea's gegenereerd. Laten we alle gegenereerde tekst (alle 5 alinea's) van deze pagina extraheren.

Voordat u begint met het extraheren van informatie van een webpagina, moet u de HTML-structuur van de inhoud van de webpagina kennen.

U kunt eenvoudig de HTML-structuur vinden van de inhoud die u wilt extraheren met behulp van de Firefox-ontwikkelaarstool. Openen Firefox-ontwikkelaarstool, druk op de rechter muisknop (RMB) op de pagina en klik op Inspecteer element (Q).

Firefox-ontwikkelaarstool moet worden geopend. Klik op de Inspecteer icoon () zoals aangegeven in de onderstaande schermafbeelding.

Plaats de muisaanwijzer op de eerste alinea, zoals weergegeven in de onderstaande schermafbeelding. Druk vervolgens op de linkermuisknop (LMB) om deze te selecteren.

De HTML-structuur van de alinea's moet worden weergegeven in de Inspecteren tabblad van de Firefox-ontwikkelaarstool. Zoals u kunt zien, bevinden de gegenereerde lorem ipsum-paragrafen zich in a div tag met de ID kaart lippensom.

Om de lorem ipsum-paragrafen te extraheren met Selenium Firefox Gecko Driver, maakt u een nieuw Python-script ex02.py in uw projectdirectory en typ de volgende regels codes erin:.

van selenium import webdriver
van selenium.webstuurprogramma.firefox.opties importeren Opties
van selenium.webstuurprogramma.gemeenschappelijk.sleutels importeren Sleutels
firefoxOptions = Opties()
firefoxOpties.add_argument("-headless")
browser = webstuurprogramma.Firefox(executable_path="./drivers/geckodriver", options=firefoxOptions)
browser.get('https://www.lippensom.com/feed/html')
lipsum = browser.find_element_by_id('lipsum')
afdrukken (lipsom).tekst)
browser.stoppen()

Als u klaar bent, slaat u de ex02.py Python-script.

Regel 10 laadt de lorem ipsum-generatorpagina met behulp van de browser.krijgen() methode.

De lorem ipsum-inhoud bevindt zich in a div tag met de id lippensom. Lijn 12 gebruikt de browser.find_element_by_id() methode om het van de webpagina te selecteren en op te slaan in de lippensom variabele.

Regel 13 drukt de gegenereerde lorem ipsum-inhoud af op de console. Hier de tekst eigenschap wordt gebruikt om toegang te krijgen tot de inhoud van de div element met de id lippensom.

Voer nu het Python-script uit ex02.py als volgt:

$ python3 ex02.py

Zoals je kunt zien, heeft Selenium de lorem ipsum-inhoud correct uit de webpagina gehaald.

Het Python-script uitvoeren ex02.py opnieuw geeft je een andere uitvoer, zoals je kunt zien in de onderstaande schermafbeelding.

Voorbeeld 03: Lijstgegevens extraheren met Selenium

In deze sectie ga ik u een voorbeeld laten zien van webslooplijstgegevens van een website die Selenium Firefox Gecko-stuurprogramma gebruikt in headless-modus.

Bezoek eerst de random-name-generator.info van de Firefox-webbrowser. Deze website genereert elke keer dat u de pagina herlaadt 10 willekeurige namen, zoals u kunt zien in de onderstaande schermafbeelding. Ons doel is om deze willekeurige namen te extraheren met Selenium in headless-modus.

Om de HTML-structuur van de lijst te weten te komen, moet u de . openen Firefox-ontwikkelaarstool. Druk hiervoor op de rechter muisknop (RMB) op de pagina en klik op Inspecteer element (Q).

Firefox-ontwikkelaarstool moet worden geopend. Klik op de Inspecteer icoon () zoals aangegeven in de onderstaande schermafbeelding.

Beweeg vervolgens over de lijst met Willekeurige namen. De lijst moet worden gemarkeerd zoals aangegeven in de onderstaande schermafbeelding. Druk vervolgens op de linkermuisknop (LMB) om de lijst te selecteren.

De HTML-code van de lijst moet worden gemarkeerd in de Inspecteur tabblad van de Firefox-ontwikkelaarstool. Hier staat de lijst met willekeurige namen in a div element. De div element heeft de klasse naam resultaten. Binnenin hebben we een oud element met de klasse naam namenlijst. Binnen in de oud element, elk van de namen staat in a li element.

Hieruit kunnen we zeggen dat om naar de li tags, we moeten volgen div.resultaten > oude.naamLijst > li

Onze CSS-selector zal dus zijn: div.resultaten oud.naamLijst li (vervang gewoon de > borden met witruimte)

Maak voor het extraheren van deze willekeurige namen een nieuw Python-script ex03.py en typ de volgende regels codes erin:.

van selenium import webdriver
van selenium.webstuurprogramma.firefox.opties importeren Opties
van selenium.webstuurprogramma.gemeenschappelijk.sleutels importeren Sleutels
firefoxOptions = Opties()
firefoxOpties.add_argument("-headless")
browser = webstuurprogramma.Firefox(executable_path="./drivers/geckodriver", options=firefoxOptions)
browser.get("http://willekeurige-naam-generator.info/")
nameList = browser.find_elements_by_css_selector('div.resultaten oud.naamLijst li')
voor naam in naamlijst:
print naam.tekst)
browser.stoppen()

Als u klaar bent, slaat u de ex03.py Python-script.

Regel 10 laadt de website voor het genereren van willekeurige namen met behulp van de browser.krijgen() methode.

Regel 11 selecteert de namenlijst met de browser.find_elements_by_css_selector() methode. Deze methode gebruikt de CSS-selector div.resultaten oud.naamLijst li om de namenlijst te vinden. Vervolgens wordt de namenlijst opgeslagen in de namenlijst variabele.

In regel 13 en 14, a voor lus wordt gebruikt om door de te itereren namenlijst lijst van li elementen. In elke iteratie wordt de inhoud van de li element is afgedrukt op de console.

Voer nu het Python-script uit ex03.py als volgt:

$ python3 ex03.py

Zoals je kunt zien, is het Python-script ex03.py alle willekeurige namen van de webpagina opgehaald.

Als je het script een tweede keer uitvoert, zou het een nieuwe lijst met willekeurige namen moeten retourneren, zoals je kunt zien in de onderstaande schermafbeelding.

Conclusie:

Dit artikel zou u moeten helpen aan de slag te gaan met Selenium met behulp van de Firefox-webbrowser. Je zou in staat moeten zijn om vrij eenvoudig een Selenium Firefox Gecko-stuurprogrammaproject op te zetten en je browsertests, webautomatisering en webscrapingtaken uit te voeren.

Hoe de muisaanwijzer en cursorgrootte, kleur en schema op Windows 10 te veranderen
De muisaanwijzer en cursor in Windows 10 zijn zeer belangrijke aspecten van het besturingssysteem. Dit geldt ook voor andere besturingssystemen, dus i...
Gratis en open source game-engines voor het ontwikkelen van Linux-games
Dit artikel behandelt een lijst met gratis en open source game-engines die kunnen worden gebruikt voor het ontwikkelen van 2D- en 3D-games op Linux. E...
Shadow of the Tomb Raider voor Linux-zelfstudie
Shadow of the Tomb Raider is de twaalfde toevoeging aan de Tomb Raider-serie - een actie-avonturengame-franchise gemaakt door Eidos Montreal. De game ...