Selenium

Browserautomatisering met Selenium (Python)

Browserautomatisering met Selenium (Python)
SELENIUM is een webgebaseerde en open source-tool die wordt gebruikt om de webbrowser te besturen via vele programmeertalen. Het is een tool van derden en is beschikbaar voor veel programmeertalen (bijv.g. Java, Python, C#, PHP enz.). Het heeft de ondersteuning voor bijna alle browsers. In deze zelfstudie bekijken we hoe u Selenium met Python kunt gebruiken, omdat Python een comfortabele omgeving biedt om deze tool te gebruiken. Met Selenium API voor Python kan uw programma uw browser rechtstreeks besturen op dezelfde manier als een mens human. Het kan nieuwe tabbladen voor u openen, uw informatie invullen, formulieren indienen, op verschillende links klikken en andere soortgelijke acties. Hier zullen we zien hoe we onze webbrowser automatiseren met selenium met Python.

Selenium Installatie

Voor gebruik SELENIUM module in python, we moeten het installeren. Voer de volgende opdracht uit in de terminal om het te installeren:.

pip installeer selenium

OF

pip3 installeer selenium

Dit zal installeren SELENIUM module en nu is het klaar voor gebruik.

Webstuurprogramma's

Voordat u de webbrowser kunt automatiseren met de SELENIUM-module, is een webstuurprogramma van de gekozen browser vereist. Om de Chrome-browser te automatiseren, hebben we een Chrome-webstuurprogramma nodig. Het pad, waar het webstuurprogrammabestand wordt geplaatst, wordt als argument doorgegeven. Het webstuurprogramma communiceert met de webbrowser via een protocol. Ga naar de volgende link om webstuurprogramma's van verschillende browsers te downloaden.

https://www.seleniumhq.org/download/

Beginnen

Nadat je de vereiste modules hebt geïnstalleerd, kun je python CLI openen en beginnen met spelen met je browser. Dus laten we eerst webdriver en andere modules importeren, deze modules en klassen laten je Python-programma toetsaanslagen en andere informatie naar je browser sturen.

C:\Users\Usama Azad>python
Python 3.6.4 (v3.6.4:d48eceb, 19 december 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] op win32
Typ "help", "copyright", "credits" of "licentie" voor meer informatie.
>>> van selenium import webdriver
>>> van selenium.webstuurprogramma.gemeenschappelijk.sleutels importeren Sleutels
#pad naar uw Chrome-stuurprogramma's
>>> stuurprogramma = webstuurprogramma.Chrome('C:\chromedriver')

Dit opent een nieuw Chrome-browservenster voor u. Nu kunt u selenium krijgen om naar elke website te gaan met behulp van .get() methode. Deze methode opent de website en wacht tot deze is geladen, waarna u uw volgende opdracht kunt invoeren.

>>> chauffeur.get("https://www.facebook.com")

Elementen in een webpagina zoeken

We kunnen een specifiek element op een webpagina vinden door de volgende methode te volgen:.

Elementen lokaliseren met Selenium

Om elementen op een webpagina te lokaliseren gebruiken we 'find_element' methode'. Hieronder volgen de 'find_element' methoden beschikbaar in SELENIUM.

Door de bovenstaande methoden te gebruiken, kunnen we een element op een webpagina lokaliseren en gebruiken in onze automatiseringscode.

Klikken op verschillende webpagina-elementen

click()-methode in selenium kan worden gebruikt om op verschillende links en knopelementen te klikken die u met de bovenstaande methoden hebt gevonden. U wilt bijvoorbeeld klikken op "Account vergeten"?” op de Facebook-pagina

>>> link_button = stuurprogramma.find_element_by_link_text('Account vergeten?')
>>> link_button.Klik()

Speciale sleutels verzenden

Selenium heeft ook een module waarmee je speciale sleutels (bijv.g, Enter, Escape, Page down, page up etc) tijdens het surfen op het web. U moet deze module importeren met de volgende opdracht:

>>> van selenium.webstuurprogramma.gemeenschappelijk.sleutels importeren Sleutels

U leest bijvoorbeeld een artikel op Wikipedia over de geschiedenis van de Verenigde Staten, maar u bent te lui om na een tijdje op de pijl-omlaag te drukken. U kunt automatiseren door deze sleutel naar de browser te sturen met Selenium

van selenium import webdriver
van selenium.webstuurprogramma.gemeenschappelijk.sleutels importeren Sleutels
import tijd
stuurprogramma = webstuurprogramma.Chrome('C:\chromedriver')
#Open de artikellink met de get-methode
bestuurder.get("https://nl.wikipedia.org/wiki/United_States")
#Begin vanaf het begin van de pagina
elem = bestuurder.find_element_by_tag_name('html')
terwijl waar:
 
tijd.slapen(5)
elem.send_keys(Sleutels.OMLAAG)

Hoe de browser te automatiseren

In deze sectie zullen we zien hoe we onze webbrowser kunnen automatiseren met behulp van enkele gebruiksscenario's.

Automatisch inloggen op sociale media-websites

Met webautomatisering kunt u uw inlogproces eenvoudig automatisch laten verlopen. Als u uw sociale media-websites regelmatig op een bepaald tijdstip (bijvoorbeeld 20.00 uur) controleert, is het goed om dit proces te automatiseren. Hieronder volgt de code om het inlogproces van twee sociale-mediasites 'facebook' en 'twitter' te automatiseren met behulp van SELENIUM module in Python.

# webdriver importeren uit seleniummodule
van selenium import webdriver
 
# speciale sleutels importeren uit selenium
van selenium.webstuurprogramma.gemeenschappelijk.sleutels importeren Sleutels
 
# 'driver'-object maken voor 'Google-Chrome'
stuurprogramma = webstuurprogramma.Chrome('pad naar Chrome-stuurprogramma')
 
# het venster maximaliseren
bestuurder.maximaliseren_window()
 
# facebook openen
bestuurder.krijgen('http://www.facebook.com')
 
# lokaliseren van 'E-mail of Telefoon' element met 'id' attribuut
gebruikersnaam = stuurprogramma.find_element_by_id('e-mail')
 
# Gebruikersnaam of het e-mailadres voor facebook invoeren
gebruikersnaam.send_keys('Voer gebruikersnaam/e-mail in')
 
# lokaliseren van 'Password' element met behulp van 'id' attribuut
wachtwoord = stuurprogramma.find_element_by_id('pass')
 
# wachtwoord invoeren voor facebook
wachtwoord.send_keys("Voer wachtwoord in")
 
# zoek het 'login button'-element met behulp van het 'id' attribuut en druk op 'Enter'
bestuurder.find_element_by_id('u_0_b').send_keys(Sleutels.ENTER)
 
# openen nieuw tabblad voor twitter
bestuurder.execute_script("venster.open('http://www.twitteren.com', 'tab2');")
 
# overschakelen naar nieuw tabblad
bestuurder.switch_to_window('tab2')
 
#zoek het 'log in'-element en klik erop
bestuurder.find_element_by_xpath('//*[@id="doc"]/div/div[1]/div[1]/div[2]/div[1]').Klik()
 
# zoekelement 'Telefoon, e-mail of gebruikersnaam'
gebruikersnaam = stuurprogramma.find_element_by_xpath('//*[@id="page-container"]/div/div[1]/form/
fieldset/div[1]/input')
 
# gebruikersnaam invoeren voor twitter
gebruikersnaam.send_keys('Voer gebruikersnaam in')
 
# zoeken naar 'Wachtwoord'-element'
wachtwoord = stuurprogramma.find_element_by_xpath('//*[@id="page-container"]/div/div[1]/form/
fieldset/div[2]/input')
# wachtwoord invoeren voor twitter
wachtwoord.send_keys('Voer wachtwoord in')
# zoek de knop 'inloggen' en klik erop
bestuurder.find_element_by_xpath('//*[@id="page-container"]/div/div[1]/form/div[2]/button')
.Klik()

Bovenstaande code automatiseert de browser om in te loggen op sociale-mediawebsites. Allereerst hebben we een object van onze favoriete browser gemaakt. In dit geval hebben we 'Chrome' als browser genomen. Om een ​​object te maken, hebben we het pad van onze 'chromedriver' als argument doorgegeven. Vervolgens hebben we de url van Facebook ingevoerd en ingelogd op Facebook door elementen te selecteren en gebruikersnaam en wachtwoord door te geven.

Hierna hebben we een nieuw tabblad geopend en de url van twitter ingevoerd. Hierna schakelden we over naar het nieuwe tabblad omdat de besturing van de code nog steeds op het eerste tabblad stond, hoewel het tweede tabblad open was. Daarna logden we in op Twitter door elementen te selecteren en gebruikersnaam en wachtwoord door te geven.

Automatisering van online winkelen

Een ander goed voorbeeld van browserautomatisering zou online winkelen kunnen zijn. U wilt bijvoorbeeld online een camera kopen maar de prijzen zijn te hoog. Je checkt elke dag of de prijs binnen jouw bereik ligt of niet. Deze taak kan worden geautomatiseerd met: SELENIUM en u kunt het controleren van de prijs elke dag vermijden. De volgende code laat je via e-mail weten of de prijs van je gewenste product betaalbaar is of niet. Als uw gewenste product in de uitverkoop is, zal het programma u hiervan op de hoogte stellen via een e-mail.

# webdriver importeren uit seleniummodule
van selenium import webdriver
 
# smtplib-module importeren voor het verzenden van e-mail
smtplib importeren
 
# definiërende e-mailfunctie om via e-mail te informeren
def mail():
 
# verbinding maken met de gmail-server met domeinnaam en poortnummer. 
Dit verschilt per e-mailprovider
verbinding = smtplib.SMTP('smtp.gmail.com', 587)
 
# zeg hallo tegen de server
verbinding.ehlo()
 
# versleutelde TLS-verbinding starten
verbinding.schrikt()
 
# log in op de gmail-server met uw hoofdadres en wachtwoord
verbinding.login('mailadres afzender', 'wachtwoord')
 
# mail naar jezelf sturen om je te informeren over de prijs van de camera
verbinding.sendmail('mailadres afzender', 'mailadres ontvanger',
'Onderwerp: u kunt de camera kopen')
 
# verbinding beëindigen
verbinding.stoppen()
# mailfunctie eindigt hier
 
# Google Chrome starten door het pad van chromedriver als argument op te geven
stuurprogramma = webstuurprogramma.Chrome('pad naar chromedriver')
 
# het Chrome-venster minimaliseren
bestuurder.minimal_window()
 
# openingsdraz.pk-site
bestuurder.krijgen('https://www.daraz.pk/')
 
# lokaliseren van element van zoekbalk met id-attribuut om naar camera te zoeken
zoekbalk = stuurprogramma.find_element_by_id('q')
 
#schrijfcamera in zoekbalk
zoekbalk.send_keys('camera')
 
#zoekknopelement zoeken met xpath van element
zoeken = bestuurder.find_element_by_xpath('//*[@id="topActionHeader"]/div/div[2]/div/div[2]
/form/div/div[2]/knop')
 
#klikken op de zoekknop
zoeken.Klik()
 
# lokaliseren element van uw gewenste product met xpath attribuut
product = bestuurder.find_element_by_xpath('//*[@id="root"]/div/div[3]/div[1]/div/div[1]
/div[2]/div[1]/div/div/div[2]/div[2]/a')
 
# klikken op je gewenste product
Product.Klik()
 
# lokaliseren van prijselement met xpath-kenmerk
prijs = chauffeur.find_element_by_xpath('//*[@id="module_product_price_1"]/div/div/span')
 
# tekst extraheren uit prijselement. Dit geeft de prijs van het product zoals 'Rs. 24.500'
prijs = prijs.tekst
 
# prijs omzetten in string
Prijs = str(prijs)
 
# een lege array definiëren. Dit wordt gebruikt bij het extraheren van cijfers uit de prijs zoals '24500'
vorm 'Rs'. 24.500'
aantal = []
 
# alle vermeldingen van prijsreeks één voor één lezen met for-lus
voor x in prijs:
 
# controleren of de invoer een cijfer is of niet, omdat we alleen cijfers in de prijs willen
als x.iscijfer():
 
# alleen cijfers toevoegen aan nummerlijst
aantal.toevoegen(x)
 
# samenvoegen met alle vermeldingen van num list. Nu is de prijs een string die alleen cijfers bevat
prijs = ".join(aantal)
 
# string van prijs omzetten in geheel getal
prijs = int(prijs)
 
# controleren of de prijs betaalbaar is of niet
als prijs <= 25000:
 
# bellen mail functie om u te informeren over de prijs
mail()
 
# browser sluiten
bestuurder.stoppen()

Bovenstaande code opent daraz.pk-site en zoekt naar de camera en informeert u via e-mail of de prijs betaalbaar is. Allereerst hebben we geïmporteerd SELENIUM en SMTPLIB modules. Vervolgens hebben we de 'mail'-functie gedefinieerd die u een e-mail stuurt met de mededeling dat de prijs betaalbaar is, wanneer u wordt gebeld.

Hierna hebben we de Chrome-browser geopend met chromedriver en gezocht naar 'daraz.pk'. Vervolgens lokaliseren we ons gewenste product met behulp van elementen en hun attributen. Hoe elementen worden gevonden en gelokaliseerd, is hierboven beschreven. De prijs die we kregen was een string, dus we hebben deze string omgezet in een geheel getal en vervolgens gecontroleerd of de prijs betaalbaar is of niet. Als de prijs betaalbaar is, bel dan de 'mail'-functie.

Cron-taak maken

Bovenstaande twee automatiseringsscripts moeten eenmaal per dag op een specifiek tijdstip worden uitgevoerd. We kunnen dit beheren met behulp van cron job. Taken die aan crontab zijn toegevoegd, kunnen herhaaldelijk op een specifiek tijdstip worden uitgevoerd. Om bovenstaande taken in crontab toe te voegen, voer je eerst de volgende opdracht uit in Linux Terminal:.

[e-mail beveiligd]:~$ crontab -e

Bovenstaande opdracht opent crontab-bestand om te bewerken. Voer aan het einde van het bestand de volgende opdracht in:.

0 8 * * * python /pad/naar/python/script

We zien vermeldingen voor het commando van rechts naar links.

Dus deze opdracht wordt elke dag om 8 uur uitgevoerd.

Conclusie

In dit artikel hebben we besproken hoe u kunt gebruiken SELENIUM samen met Python om uw browser te automatiseren met behulp van verschillende technieken. Je kunt je dagelijkse routinewerk automatiseren, formulieren invullen, je spullen downloaden en nog veel meer ermee. We hebben hier slechts twee voorbeelden besproken, maar je kunt alles automatiseren wat een mens handmatig kan doen met de browser.

Installeer de nieuwste Dolphin Emulator voor Gamecube & Wii op Linux
Met de Dolphin Emulator kun je de door jou gekozen Gamecube- en Wii-spellen spelen op Linux Personal Computers (pc). Omdat het een vrij beschikbare e...
Hoe de GameConqueror Cheat Engine in Linux te gebruiken
Het artikel bevat een handleiding over het gebruik van de GameConqueror cheat-engine in Linux. Veel gebruikers die games op Windows spelen, gebruiken ...
Beste gameconsole-emulators voor Linux
Dit artikel bevat een lijst van populaire emulatiesoftware voor gameconsoles die beschikbaar is voor Linux. Emulatie is een softwarecompatibiliteitsla...