Selenium

Selenium-webautomatisering met Python

Selenium-webautomatisering met Python
Iedereen gebruikt het web op een bepaald moment, dus het is een enorme oproep aan ontwikkelaars om ervoor te zorgen dat hun webapplicaties werken zoals bedoeld. Om dit te doen, kan webautomatisering erg nuttig zijn.

Om commerciële software succesvol te laten zijn, moet deze een aantal tests ondergaan. Automatisering kan handig zijn voor gebruikerstests, waarbij het gebruik van software wordt gesimuleerd, net zoals een gebruiker zou doen. Het is ook handig voor penetratietests, zoals proberen wachtwoorden te kraken, SQL-injecties uit te voeren, enz.

Afgezien van testen, kan webautomatisering erg handig zijn voor het schrapen van zware JavaScript-websites.

Selenium is een van de meest efficiënte tools voor webautomatisering. Het is ook erg populair onder verschillende talen, beschikbaar in talen zoals Java, JavaScript.

Installatie

Selenium kan in python worden geïnstalleerd met behulp van de pip-module zoals weergegeven in de onderstaande opdracht:

pip installeer selenium

Het zou de bibliotheek en benodigde afhankelijkheden installeren, de installatie kan worden bevestigd door deze in een interactieve sessie te importeren.

$ python
Python 3.5.2 (standaard, 14 september 2017, 22:51:06)
[GCC 5.4.0 20160609] op linux
Typ "help", "copyright", "credits" of "licentie" voor meer informatie.
>>> selenium importeren

Aangezien er geen fout is opgetreden, betekent dit dat onze installatie is geslaagd. Daar houdt het echter niet op; dit komt omdat selenium hand in hand werkt met browsers zoals Chrome en Firefox en het een stuurprogramma van de browser nodig heeft om zijn taken te kunnen uitvoeren.

We gaan kijken hoe we de stuurprogramma's kunnen installeren. Voor Mozilla Firefox kunt u het stuurprogramma downloaden dat bekend staat als gekkobestuurder van de github-pagina. Als u een Chrome-gebruiker bent, kunt u het stuurprogramma downloaden dat bekend staat als chromedriver van de officiële site.

Na het downloaden voeg je de driver toe aan het pad. Persoonlijk zou ik zo'n bestand graag in mijn /usr/local/bin directory, en ik raad je aan hetzelfde te doen.

Als u hetzelfde wilt doen, moet de onderstaande opdracht het van uw huidige map naar de . verplaatsen bin map.

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

Toevoegen gekkobestuurder of chromedriver naar pad uit die map, voer de volgende opdracht uit:.

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

Nadat u het stuurprogramma voor uw gewenste browser aan het pad hebt toegevoegd, kunt u bevestigen of alles goed werkt door het volgende vanuit een interactieve sessie uit te voeren:.

Voor Firefox:

$ python
Python 3.5.2 (standaard, 14 september 2017, 22:51:06)
[GCC 5.4.0 20160609] op linux
Typ "help", "copyright", "credits" of "licentie" voor meer informatie.
>>> van selenium import webdriver
>>> webstuurprogramma.Firefox()

Voor chroom:

$ python
Python 3.5.2 (standaard, 14 september 2017, 22:51:06)
[GCC 5.4.0 20160609] op linux
Typ "help", "copyright", "credits" of "licentie" voor meer informatie.
>>> van selenium import webdriver
>>> stuurprogramma = webstuurprogramma.chroom()

Nadat je dat hebt uitgevoerd en een browser verschijnt, werkt alles goed. Nu kunnen we coole dingen gaan doen met Selenium.

De meeste code voor de rest van dit artikel zou in de interactieve sessie worden gedaan, maar je kunt het in een bestand schrijven, net als je gebruikelijke python-script.

Ook zouden we werken aan de bestuurder variabele uit de bovenstaande code.

Webpagina's bezoeken

Nadat de webpagina is geopend, kunt u elke webpagina bezoeken door te bellen naar de krijgen methode aan bestuurder. De geopende browser laadt vervolgens het doorgegeven adres, net zoals wanneer u het zelf zou doen.

Vergeet niet http:// of https:// te gebruiken, anders krijgt u te maken met vervelende fouten.

>>> chauffeur.get("http://google.com")

Dit zou de startpagina van Google laden.

Broncode ophalen

Nu we hebben geleerd webpagina's te bezoeken, kunnen we gegevens van de bezochte webpagina schrapen.

Van de bestuurder object, kunnen we de broncode verkrijgen door de pagina bron attribuut, kunt u vervolgens doen wat u maar wilt met de html met behulp van de BeautifulSoup-bibliotheek.

>> chauffeur.pagina bron

Tekstvakken vullen

Als we bijvoorbeeld de startpagina van Google hebben geladen en we willen wat informatie in het zoekvak typen; het kan gemakkelijk worden gedaan.

Om dit te doen, gebruiken we het inspecteur-element om de broncode te controleren en de tag-informatie van het zoekvak te zien. Om dit te doen, klikt u met de rechtermuisknop op het zoekvak en selecteert u inspecteer element.

Op mijn machine heb ik het volgende:

value="" aria-label="Zoeken" aria-haspopup="false" role="combobox" aria-autocomplete="list"
style="border: medium geen; padding: 0px; margin: 0px; height: auto; width: 100%;
achtergrond: transparant
url("data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEA
Ow%3D%3D") herhaal scrollen 0% 0%; positie: absoluut; z-index: 6; links: 0px; omtrek:
gemiddeld geen;" dir="ltr" spellcheck="false" type="text">

Met selenium kunnen we elementen selecteren op tagnaam, id, klassenaam enz.

Ze kunnen worden geïmplementeerd met de volgende methoden:

.find_element_by_id
.find_element_by_tag_name
.find_element_by_class_name
.find_element_by_name

Van de Google-webpagina heeft het zoekvak een id lst-ib, dus we zouden het element vinden op id.

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

Nu we het element hebben gevonden en opgeslagen in a zoekvak variabele, kunnen we enkele bewerkingen in het zoekvak uitvoeren.

>>> zoekvak.send_keys("Planeet Aarde")

Dit zou de tekst "Planet Earth" in het vak invoeren.

>>> zoekvak.Doorzichtig()

Dit zou de ingevoerde tekst uit het zoekvak wissen. Je zou de moeten gebruiken send_keys methode opnieuw, in de volgende sectie zouden we op de zoekknop klikken, dus we hebben iets om te zoeken.

Op de juiste knoppen klikken

Nu we het zoekvak met wat informatie hebben gevuld, kunnen we doorgaan en zoeken.

Dezelfde manier waarop we het zoekvak hebben gevonden, is dezelfde manier waarop we de zoekknop gaan vinden.

Op mijn machine heb ik het volgende:

type = "verzenden">

Als we dit bekijken, kunnen we het name-attribuut gebruiken. We kunnen het krijgen door de onderstaande code te gebruiken:

>>> zoekknop = stuurprogramma.find_element_by_name("btnK")

Nadat we de gewenste tag hebben gevonden, kunnen we op de knop klikken met de Klik methode.

>>> zoek_knop.Klik()

Wees echter voorzichtig, vanwege de automatische suggesties van Google kunt u uiteindelijk naar iets anders zoeken.

Om dit te omzeilen, moet je ervoor zorgen dat het toetsenbord onmiddellijk op de enter-toets drukt. Sleutels vallen buiten het bestek van dit artikel, maar hier is toch de code.

>>> van selenium.webstuurprogramma.gemeenschappelijk.sleutels importeren Sleutels
>>> search_box = stuurprogramma.find_element_by_id("lst-ib")
>>> zoekvak.send_keys("Planeet Aarde")
>>> zoekvak.send_keys(Sleutels.TERUGKEER)

Met de bovenstaande code hoeven we niet op de zoekknop te klikken. Het werkt net zoals wanneer we op de enter-toets drukken nadat we de zoekwaarden hebben ingetypt.

Deze methode om op knoppen te klikken werkt niet alleen met knoppen, het werkt ook met links.

Schermafbeeldingen maken

Je leest het goed! Je kunt screenshots maken met selenium, en het is net zo eenvoudig als de vorige secties.

Wat we zullen doen is de bellen save_screenshot methode op het stuurprogramma-object, we zouden dan de naam van de afbeelding doorgeven en de schermafbeelding zou worden gemaakt.

>>> chauffeur.save_screenshot("Planeet-aarde.png")

Zorg ervoor dat de afbeeldingsnaam een ​​. heeft .png-extensie, anders krijgt u mogelijk een beschadigde afbeelding.

Wanneer u klaar bent met de bewerkingen, kunt u de browser sluiten door de volgende code uit te voeren:

>>> chauffeur.dichtbij()

Conclusie

Selenium staat bekend als een zeer krachtig hulpmiddel en het gebruik ervan wordt als een essentiële vaardigheid voor automatiseringstesters beschouwd. Selenium kan veel meer doen dan in dit artikel wordt besproken, toetsenbordbewegingen kunnen feitelijk worden gerepliceerd zoals weergegeven met Sleutels.RETOUR. Als je meer wilt weten over selenium, kun je het bekijken documentatie, het is vrij duidelijk en gemakkelijk te gebruiken.

Hoe de muis- en touchpad-instellingen te wijzigen met Xinput in Linux
De meeste Linux-distributies worden standaard geleverd met de bibliotheek "libinput" om invoergebeurtenissen op een systeem af te handelen. Het kan in...
Wijs uw muisknoppen anders toe voor verschillende software met X-Mouse Button Control
Misschien heeft u een tool nodig waarmee u de bediening van uw muis kunt veranderen bij elke applicatie die u gebruikt. Als dit het geval is, kunt u e...
Microsoft Sculpt Touch draadloze muis Review
Ik las onlangs over de Microsoft Sculpt Touch draadloze muis en besloot hem te kopen. Nadat ik het een tijdje had gebruikt, besloot ik mijn ervaring e...