Selenium

Browser-Automatisierung mit Selenium (Python)

Browser-Automatisierung mit Selenium (Python)
SELEN ist ein webbasiertes & Open Source Tool welches verwendet wird um den Webbrowser über viele Programmiersprachen zu steuern. Es ist ein Drittanbieter-Tool und für viele Programmiersprachen verfügbar (z.G. Java, Python, C#, PHP usw.). Es unterstützt fast alle Browser. In diesem Tutorial sehen wir uns an, wie man Selenium mit Python verwendet, da Python eine komfortable Umgebung für die Verwendung dieses Tools bietet. Mit der Selenium-API für Python kann Ihr Programm Ihren Browser auf ähnliche Weise wie ein Mensch direkt steuern. Es kann neue Registerkarten für Sie öffnen, Ihre Informationen ausfüllen, Formulare senden, auf verschiedene Links klicken und andere ähnliche Aktionen ausführen. Hier sehen wir, wie wir unseren Webbrowser mit Selenium mit Python automatisieren.

Selen-Installation

Vor Gebrauch SELEN Modul in Python, wir müssen es installieren. Führen Sie den folgenden Befehl im Terminal aus, um es zu installieren.

pip installieren Selenen

ODER

pip3 installiere Selen

Dies wird installiert SELEN Modul und jetzt ist es einsatzbereit.

Webtreiber

Vor der Automatisierung des Webbrowsers mit dem SELENIUM-Modul ist der Webtreiber des ausgewählten Browsers erforderlich. Um den Chrome-Browser zu automatisieren, benötigen wir den Chrome-Webtreiber. Der Pfad, in dem die Webtreiberdatei platziert wird, wird als Argument übergeben. Der Webtreiber interagiert mit dem Webbrowser über ein Protokoll. Rufen Sie den folgenden Link auf, um Webtreiber für verschiedene Browser herunterzuladen.

https://www.Selenhq.org/herunterladen/

Einstieg

Nachdem Sie die erforderlichen Module installiert haben, können Sie die Python-CLI öffnen und mit Ihrem Browser spielen. Lassen Sie uns also zuerst Webtreiber und andere Module importieren. Mit diesen Modulen und Klassen kann Ihr Python-Programm Tastenanschläge und andere Informationen an Ihren Browser senden.

C:\Benutzer\Usama Azad>python
Python 3.6.4 (v3.6.4:d48eceb, 19. Dezember 2017, 06:54:40) [MSC vC.1900 64 Bit (AMD64)] auf win32
Geben Sie "Hilfe", "Copyright", "Credits" oder "Lizenz" ein, um weitere Informationen zu erhalten.
>>> vom Selen-Import-Webtreiber
>>> aus Selen.Webtreiber.verbreitet.Schlüsselimport Schlüssel
#Pfad zu Ihren Chrome-Treibern
>>> Treiber = Webtreiber.Chrome('C:\chromedriver')

Dadurch wird ein neues Chrome-Browserfenster für Sie geöffnet. Jetzt können Sie Selen dazu bringen, mit website auf jede Website zu gehen .get()-Methode. Diese Methode öffnet die Website und wartet darauf, dass sie geladen wird, dann können Sie Ihren nächsten Befehl eingeben.

>>> Fahrer.bekommen("https://www.Facebook.com")

So finden Sie Elemente in einer Webseite

Wir können ein bestimmtes Element auf einer Webseite mit der folgenden Methode finden.

Lokalisieren von Elementen mit Selen

Um Elemente auf einer Webseite zu finden, verwenden wir 'find_element' Methode. Im Folgenden sind die 'find_element' Methoden verfügbar in SELEN.

Mit den oben genannten Methoden können wir ein Element auf einer Webseite finden und in unserem Automatisierungscode verwenden.

Klicken auf verschiedene Webseiten-Elemente

Die Methode click() in Selen kann verwendet werden, um auf verschiedene Links und Schaltflächenelemente zu klicken, die Sie mit den oben genannten Methoden gefunden haben. Sie möchten beispielsweise auf „Konto vergessen“ klicken?“ auf der Facebook-Seite

>>> link_button = Treiber.find_element_by_link_text('Konto vergessen?')
>>> link_button.klicken()

Sonderschlüssel senden

Selenium verfügt auch über ein Modul, mit dem Sie Sonderschlüssel senden können (z.g, Enter, Escape, Bild runter, Bild hoch usw.), während du im Internet surfst. Sie müssen dieses Modul mit dem folgenden Befehl importieren

>>> aus Selen.Webtreiber.verbreitet.Schlüsselimport Schlüssel

Sie lesen beispielsweise einen Artikel auf Wikipedia über die Geschichte der Vereinigten Staaten, sind aber zu faul, um nach einer Weile die Pfeiltaste NACH UNTEN zu drücken. Sie können automatisieren, indem Sie diesen Schlüssel mit Selenium an den Browser senden

vom Selen-Import-Webtreiber
aus Selen.Webtreiber.verbreitet.Schlüsselimport Schlüssel
Importzeit
Treiber = Webtreiber.Chrome('C:\chromedriver')
#Öffne den Artikellink mit der Get-Methode get
Treiber.get("https://de.Wikipedia.org/wiki/United_States")
#Beginne am Anfang der Seite
elem = Fahrer.find_element_by_tag_name('html')
während Wahr:
 
Zeit.schlafen(5)
elem.send_keys(Schlüssel.NIEDER)

So automatisieren Sie den Browser

In diesem Abschnitt sehen wir, wie Sie unseren Webbrowser mit Hilfe einiger Anwendungsfälle automatisieren können.

Melden Sie sich automatisch bei Social-Media-Websites an

Mit der Web-Automatisierung können Sie Ihren Login-Prozess ganz einfach automatisieren. Wenn Sie Ihre Social-Media-Websites regelmäßig zu einer bestimmten Zeit (z. B. 20 Uhr) überprüfen, ist es gut, diesen Prozess zu automatisieren. Es folgt der Code zum Automatisieren des Login-Prozesses von zwei Social-Media-Sites "Facebook" und "Twitter" mit SELEN Modul in Python.

# Webtreiber aus Selenium-Modul importieren
vom Selen-Import-Webtreiber
 
# Importieren von speziellen Schlüsseln aus Selen
aus Selen.Webtreiber.verbreitet.Schlüsselimport Schlüssel
 
# 'Treiber'-Objekt für 'Google-Chrome' erstellen
Treiber = Webtreiber.Chrome('Pfad zum Chrome-Treiber')
 
# das Fenster maximieren
Treiber.maximieren_fenster()
 
# Facebook öffnen
Treiber.erhalten('http://www.Facebook.com')
 
# Auffinden des Elements „E-Mail oder Telefon“ mithilfe des Attributs „id“
Benutzername = Fahrer.find_element_by_id('E-Mail')
 
# Eingabe des Benutzernamens oder der E-Mail für Facebook
Nutzername.send_keys('Benutzername/E-Mail eingeben')
 
# das 'Password'-Element mithilfe des 'id'-Attributs finden
Passwort = Fahrer.find_element_by_id('pass')
 
# Passwort für Facebook eingeben
Passwort.send_keys("Passwort eingeben")
 
# das 'Login-Button'-Element mit dem 'id'-Attribut lokalisieren und 'Enter' drücken
Treiber.find_element_by_id('u_0_b').send_keys(Schlüssel.EINGEBEN)
 
# Neuer Tab für Twitter öffnen
Treiber.execute_script("Fenster.öffnen('http://www.twittern.com', 'tab2');")
 
# Wechsel zu neuem Tab
Treiber.switch_to_window('tab2')
 
#das 'Anmelden'-Element finden und darauf klicken
Treiber.find_element_by_xpath('//*[@id="doc"]/div/div[1]/div[1]/div[2]/div[1]').klicken()
 
# Auffinden des Elements "Telefon, E-Mail oder Benutzername"'
Benutzername = Fahrer.find_element_by_xpath('//*[@id="page-container"]/div/div[1]/form/
fieldset/div[1]/eingabe')
 
# Benutzername für Twitter eingeben
Nutzername.send_keys('Benutzernamen eingeben')
 
# Auffinden des 'Passwort'-Elements
Passwort = Fahrer.find_element_by_xpath('//*[@id="page-container"]/div/div[1]/form/
fieldset/div[2]/input')
# Passwort für Twitter eingeben
Passwort.send_keys('Passwort eingeben')
# den 'Anmelden'-Button finden und darauf klicken
Treiber.find_element_by_xpath('//*[@id="page-container"]/div/div[1]/form/div[2]/button')
.klicken()

Der obige Code automatisiert den Browser, um sich bei Social-Media-Websites anzumelden. Als erstes haben wir ein Objekt unseres Lieblingsbrowsers erstellt. In diesem Anwendungsfall haben wir 'Chrome' als Browser verwendet. Um ein Objekt zu erstellen, haben wir den Pfad unseres 'Chromedrivers' als Argument übergeben. Dann haben wir die URL von Facebook eingegeben und uns bei Facebook angemeldet, indem wir Elemente ausgewählt und Benutzername und Passwort übergeben haben.

Danach haben wir einen neuen Tab geöffnet und die URL von Twitter eingegeben. Danach wechselten wir zum neuen Tab, da die Kontrolle des Codes noch auf dem ersten Tab war, obwohl der zweite Tab geöffnet war. Dann haben wir uns bei Twitter angemeldet, indem wir Elemente ausgewählt und Benutzernamen und Passwort weitergegeben haben passing.

Online-Shopping-Automatisierung

Ein weiteres gutes Beispiel für die Browser-Automatisierung könnte das Online-Shopping sein. Sie möchten zum Beispiel eine Kamera online kaufen, aber die Preise sind zu hoch. Sie prüfen jeden Tag, ob der Preis in Ihrem Bereich liegt oder nicht. Diese Aufgabe kann automatisiert werden mit SELEN und Sie können die tägliche Preiskontrolle vermeiden. Der folgende Code informiert Sie per E-Mail, ob der Preis Ihres gewünschten Produkts erschwinglich ist oder nicht. Wenn Ihr gewünschtes Produkt im Angebot ist, werden Sie vom Programm per E-Mail benachrichtigt.

# Webtreiber aus Selenium-Modul importieren
vom Selen-Import-Webtreiber
 
# smtplib-Modul zum Versenden von E-Mails importieren
smtplib importieren
 
# E-Mail-Funktion zum Informieren per E-Mail definieren
def mail():
 
# Herstellen einer Verbindung zum Gmail-Server mit Domainname und Portnummer. 
Dies ist bei jedem E-Mail-Anbieter unterschiedlich
Verbindung = smtplib.SMTP('smtp.Google Mail.com',587)
 
# grüße den Server
Verbindung.ehlo()
 
# verschlüsselte TLS-Verbindung starten
Verbindung.starttls()
 
# Melden Sie sich mit Ihrer Hauptadresse und Ihrem Passwort beim Google Mail-Server an
Verbindung.login('E-Mail-Adresse des Absenders', 'Passwort')
 
# E-Mail an sich selbst senden, in der Sie über den Preis der Kamera informiert werden
Verbindung.sendmail('E-Mail-Adresse des Absenders', 'E-Mail-Adresse des Empfängers',
'Betreff: Sie können die Kamera kaufen')
 
# Verbindung beenden
Verbindung.Verlassen()
# Mailfunktion endet hier
 
# Starten von Google Chrome durch Angabe des Pfads von Chromedriver als Argument
Treiber = Webtreiber.Chrome('Pfad zum Chrometreiber')
 
# Minimierung des Chromfensters
Treiber.minimieren_window()
 
# Eröffnungsdraz.pk-Site
Treiber.erhalten('https://www.daraz.pk/')
 
# Lokalisieren des Elements der Suchleiste mit dem id-Attribut, um nach der Kamera zu suchen
searchBar = Treiber.find_element_by_id('q')
 
#Kamera in Suchleiste schreiben
Suchleiste.send_keys('Kamera')
 
#Suchschaltflächenelement mithilfe von xpath des Elements lokalisieren
Suche = Fahrer.find_element_by_xpath('//*[@id="topActionHeader"]/div/div[2]/div/div[2]
/form/div/div[2]/button')
 
#klick auf die Suchschaltfläche
Suche.klicken()
 
# Lokalisierungselement Ihres gewünschten Produkts mithilfe des xpath-Attributs
Produkt = Treiber.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')
 
# Klick auf dein gewünschtes Produkt
Produkt.klicken()
 
# Preiselement mithilfe des xpath-Attributs lokalisieren
Preis = Fahrer.find_element_by_xpath('//*[@id="module_product_price_1"]/div/div/span')
 
# Text aus dem Preiselement extrahieren. Dies gibt den Preis des Produkts wie "Rs" an. 24.500'
Preis = Preis.Text
 
# Preis in String umwandeln
Preis = str(Preis)
 
# ein leeres Array definieren. Dies wird zum Extrahieren von Ziffern aus dem Preis wie "24500" verwendet
'Rs' bilden. 24.500'
Anzahl = []
 
# alle Einträge der Preiszeichenfolge nacheinander mit der for-Schleife lesen
für x im Preis:
 
# Überprüfen, ob der Eintrag ziffernweise ist oder nicht, da wir nur Ziffern im Preis haben möchten
wenn x.isziffer():
 
# Nur Ziffern zur Nummernliste hinzufügen
num.anhängen(x)
 
# alle Einträge von num list zusammenfügen. Jetzt ist der Preis eine Zeichenfolge, die nur Ziffern enthält
Preis = ".beitreten (Anzahl)
 
# wandelt die Preiszeichenfolge in eine ganze Zahl um
Preis = int(Preis)
 
# prüfen, ob der Preis erschwinglich ist oder nicht
wenn preis <= 25000:
 
# Mailfunktion anrufen, um Sie über den Preis zu informieren
mail()
 
# Browser schließen
Treiber.Verlassen()

Der obige Code öffnet daraz.pk-Site und sucht nach der Kamera und informiert Sie per E-Mail, wenn der Preis erschwinglich ist. Als erstes haben wir importiert SELEN und SMTPLIB Module. Dann haben wir die 'Mail'-Funktion definiert, die Ihnen bei Anruf eine E-Mail mit der Information sendet, dass der Preis erschwinglich ist.

Danach haben wir den Chrome-Browser mit Chromedriver geöffnet und nach 'daraz . gesucht.pk'. Dann lokalisieren wir unser gewünschtes Produkt anhand von Elementen und deren Attributen. Wie Elemente gefunden und lokalisiert werden, wurde oben beschrieben. Der Preis, den wir bekamen, war ein String, also haben wir diesen String in Integer umgewandelt und dann überprüft, ob der Preis erschwinglich ist oder nicht. Wenn der Preis erschwinglich ist, rufen Sie die 'Mail'-Funktion an.

Cron-Job erstellen

Die oben genannten zwei Automatisierungsskripte müssen einmal täglich zu einer bestimmten Zeit ausgeführt werden. Wir können dies mit Cron-Job verwalten manage. Aufgaben, die zu crontab hinzugefügt werden, können zu einem bestimmten Zeitpunkt wiederholt ausgeführt werden. Um die obigen Aufgaben in crontab hinzuzufügen, führen Sie zunächst den folgenden Befehl im Linux-Terminal aus.

[email protected]:~$ crontab -e

Der obige Befehl öffnet die Crontab-Datei zum Bearbeiten. Geben Sie am Ende der Datei den folgenden Befehl ein.

0 8 * * * Python /Pfad/zu/Python/Skript

Wir sehen Einträge vor dem Befehl von rechts nach links.

Dieser Befehl wird also jeden Tag um 8 Uhr ausgeführt.

Fazit

In diesem Artikel haben wir besprochen, wie Sie verwenden können SELEN zusammen mit Python, um Ihren Browser mit verschiedenen Techniken zu automatisieren. Du kannst damit deine tägliche Routinearbeit automatisieren, Formulare ausfüllen, deine Sachen herunterladen und vieles mehr damit. Wir haben hier nur zwei Beispiele besprochen, aber Sie können alles, was ein Mensch manuell mit dem Browser tun kann, automatisieren.

So kehren Sie die Scrollrichtung von Maus und Touchpads in Windows 10 um
Maus und Touchpads machen das Rechnen nicht nur einfach, sondern auch effizienter und weniger zeitaufwendig. Wir können uns ein Leben ohne diese Gerät...
So ändern Sie Mauszeiger- und Cursorgröße, Farbe und Schema unter Windows 10
Der Mauszeiger und der Cursor in Windows 10 sind sehr wichtige Aspekte des Betriebssystems. Dies kann auch für andere Betriebssysteme gesagt werden, a...
Kostenlose und Open-Source-Spiele-Engines für die Entwicklung von Linux-Spielen
Dieser Artikel behandelt eine Liste von kostenlosen und Open-Source-Spiele-Engines, die für die Entwicklung von 2D- und 3D-Spielen unter Linux verwend...