Seleniumautomatisierung von Webbrowsern

Seleniumautomatisierung von Webbrowsern

Selen wird verwendet, um langweilige Aufgaben zu automatisieren. Es automatisiert Browser. Vom Navigieren im Internet bis hin zur automatischen Anmeldung von Konten zum Erstellen von Bots für verschiedene Aufgaben kann mit Selenium erreicht werden.

Lassen Sie uns zunächst die Abhängigkeiten installieren:

PIP Installieren Sie Selen
PIP installieren Sie Webdriver-Manager

Navigieren im Web

Wir importieren die Abhängigkeiten:

vom Selenium importieren Webdriver
von webdriver_manager.Chromimport Chromedrivermanager
Wir initialisieren dann den Webdriver:
Treiber = Webdriver.Chrom (Chromedrivermanager ().Installieren())

Lassen Sie uns in erster Instanz versuchen, eine Webseite mit der Webseite zu navigieren Get () Methode. Der Get () Methode öffnet die Webseite oder die URL, die eingegeben wurde; Bitte beachten Sie, dass der vollständige Link bereitgestellt werden muss, damit dies funktioniert.

Treiber.Get ("https: // Duckduckgo.com/")

Angenommen, Sie wollten das Fenster mit dem maximieren maximize_window () Methode und keine Python durch den Rest des Codes durchlaufen; Sie würden dann das verwenden implizit_wait () Methode zur Pause.

Treiber.maximize_window ()
Treiber.implizit_wait (4)

Wenn Sie Informationen auf der Website wünschen, können Sie die Titelmethode verwenden, um den Namen oder den Titel der Website, die Current_url -Methode zu erhalten, um die URL zu erhalten, und die Page_Source, um den HTML -Code der Seite zu erhalten.

Druck (Treiber.Titel)
Druck (Treiber.current_url)
Druck (Treiber.Seitenquelltext)

Um einen Textstück in die Suchleiste einzugeben, müssen wir zunächst versuchen, die Suchleiste mit der “zu identifizierenprüfenSchaltfläche (mit der rechten Maustaste -> inspizieren).

Für Duckduckgo.com, es ist eine ID verfügbar, aber Sie können auch andere Attribute erhalten. Die nächste Methode, die wir verwenden, ist die Methode find_element_by_id (). Der Zweck dieser Methode ist es, das von Sorge zuständige Element auszuwählen.

Search_bar = Treiber.find_element_by_id ("search_form_input_homepage"))

Sie können dies jedoch durch alle anderen Attribute ersetzen. Wenn Sie beispielsweise den Namen zur Verfügung haben, verwenden Sie die find_elements_by_name () Methode. Wir mussten die ID nicht verwenden; Wir hätten noch etwas anderes benutzen können, wenn wir uns wollten. Zum Beispiel hätten wir den Namen wie folgt verwenden können:

Search_bar = Treiber.find_element_by_name ("q")

Da wir die Suchleiste gefunden haben, können wir jetzt einen Text mit dem eingeben send_keys () Methode.

Suchleiste.send_keys ("seleniumhq")

Theoretisch würden wir auf die nächste Schaltfläche klicken. Also, was machen wir? Ja, du hast es erraten! Wir Methoden die Elemente und finden die ID oder ein anderes Attribut der nächsten Schaltfläche. Anschließend verwenden wir die Methode cLICK (), um auf die Schaltfläche zu klicken, die wir mit einem Attribut (z. B. ID) ausgewählt haben, ausgewählt haben.

Taste = Treiber.find_element_by_id ("search_button_homepage")
Taste.klicken()

Zu diesem Zeitpunkt erhalten Sie eine Liste von Websites. Es ist so, als würde man Seleniumhq in die Suchleiste des Duckduckgo eintippen.com Site und drücken Sie die nächste Taste. Lassen Sie uns nun versuchen, auf die erste Seite zu klicken, die wir erhalten. Hier werde ich XPath verwenden, aber Sie können eines der Attribute verwenden. Bitte beachten Sie, dass bei Verwendung von XPath die Anführungszeichen innerhalb und außerhalb doppelt sind ("//*[@id = 'r1-0']/div/h2/a [1]")).

Seite = Treiber.find_element_by_xpath ("//*[@id = 'r1-0']/div/h2/a [1]")
Buchseite.klicken()

Anmelden in einem E -Mail -Konto

Nehmen wir nun an, wir möchten uns bei einem E -Mail -Konto anmelden. Wie immer haben wir begonnen, die notwendigen Module zu importieren und sie zu initialisieren, wie wir es getan haben, um auf einer Webseite zu navigieren. Hier importieren wir auch Zeit.

vom Selenium importieren Webdriver
von webdriver_manager.Chromimport Chromedrivermanager
Importzeit
Treiber = Webdriver.Chrom (Chromedrivermanager ().Installieren())
Treiber.Get ("https: // www.Google Mail.com/")
Treiber.maximize_window ()
Treiber.implizit_wait (4)
Benutzer = Treiber.find_element_by_xpath ("//*[@id = 'identifierId']"))
Benutzer.send_keys ("[email protected] ")
Weiter = Fahrer.find_element_by_xpath ("//*[@id = 'identifiernext']/div/button/div [2]")
nächste.klicken()

Als nächstes werden wir die benutzen Zeit.schlafen() Methode zur Verhinderung von Synchronisationsfehlern (manchmal dauert es länger, eine Seite zu laden, und während sie lädt, wird der Rest des Skripts ausgeführt und ein Fehler gemeldet). Um Synchronisationsfehler zu verhindern, geben wir ihm Zeit, alles zu laden.

Zeit.Schlaf (3)
Passwort = Treiber.find_element_by_xpath ("//*[@id = 'password']/div [1]/div/div [1]/input"))
Passwort.send_keys ("password1."))
Next2 = Treiber.find_element_by_xpath ("//*[@id = 'passwayNext']/div/button/div [2]")
NEXT2.klicken()

Senden von E -Mails mit Selenium

Um E -Mails zu senden, benötigen wir zwei Teile: So melden Sie sich im vorherigen Abschnitt in Google Mail an und wie Sie E -Mails aus diesem Abschnitt senden. Das Senden einer E -Mail ist so einfach wie das Navigieren im Web oder das Anmelden in Google Mail. Noch einmal wählen wir die Methode find_element_by_xpath () oder eine, die ähnlich ist wie find_element_by_id () oder eine andere, um jede Komponente der zu sendenden Nachricht zu finden - die Taste komponieren, die Zieleingangsleiste, die Subjekteingangsleiste, der Körper, der Körper und die Schaltfläche Senden. Wir müssen sie lokalisieren, sie bei Bedarf mit Text bevölkern und auf Schaltflächen klicken. Einfach genug. Versuchen wir es also:

Lassen Sie uns zunächst die Schaltfläche Komponieren mit XPath finden und dann darauf klicken:

Zeit.Schlaf (1)
compose_button = Treiber.find_element_by_xpath ("//*[@id = ': 2p']/div/div"))
compose_button.klicken()

Fügen wir als nächstes eine Zieladresse in die Eingangsleiste der Zieladresse hinzu:

Zeit.Schlaf (2)
to_input_bar = Treiber.find_element_by_id (': 8c')
to_input_bar.send_keys ("[email protected] ")

Jetzt fügen wir ein Thema hinzu, einen Körper und klicken auf die Schaltfläche Senden:

Betreff = Treiber.find_element_by_id (': 7u')
Thema.send_keys ("Test -E -Mail")
Körper = Fahrer.find_element_by_xpath ("//*[@id = ': 8z']"))
Körper.send_keys ("Dies ist eine automatisierte Nachricht, die mit Selenium gesendet wurde."))
send_button = Treiber.find_element_by_xpath ("//*[@id = ': 7k']"))
send_button.klicken()

OK, also ist es zu einfach, ein einfaches Programm zum Anmelden und Senden von Mails zu machen? Wir müssen dort nicht aufhören; Wir können alle Arten von Bots erstellen.

Mausaktionen

Das nächste, was Sie lernen sollten, ist, mit Mausaktionen umzugehen - vom Schweben bis zum Ziehen und Löschen von Dateien.

Wir müssen zuerst die Registerkarten angeben. In diesem Fall werde ich drei Registerkarten angeben - die Registerkarte Start, die Registerkarte Elektronik und die Registerkarte Handy (Handy ist in der Elektronik verschachtelt). Ok, für dieses Beispiel habe ich mich für eBay entschieden.ca. Auf eBay.ca, es gibt viele Registerkarten - einen für Zuhause und eine für Elektronik. Wir beginnen normalerweise auf der Registerkarte Heimat. Nehmen wir hier an, ich möchte auf der Registerkarte Elektronik und dann auf der Registerkarte Handy und Zubehör in ihm navigieren und darauf klicken. Wir könnten Mausaktionen verwenden, um Folgendes durchzuführen.

Wir beginnen mit dem Importieren des notwendigen und öffnen ebay.ca.

Vom Selenium importieren Webdriver
Aus Selen.Webdriver Import ActionChains
von webdriver_manager.Chromimport Chromedrivermanager
Importzeit
Treiber = Webdriver.Chrom (Chromedrivermanager ().Installieren())
Treiber.Get ("https: // www.Ebay.ca/")

Als nächstes müssen wir die Elemente hinzufügen, über die wir besorgt sind. In diesem Fall habe ich die drei roten Kisten im vorherigen Bild.

Home = Fahrer.find_element_by_xpath ("//*[@id = 'maincontent']/div [1]/ul/li [1]/span")
Elektronik = Treiber.find_element_by_xpath ("//*[@id = 'maincontent']/div [1]/ul/li [5]/a"))
Handy = Treiber.find_element_by_xpath ("//*[@id = 'maincontent']/div [1]/ul/li [5]/div [2]/div [1]/nav [1]/ul/li [1]/a "))

Wir initialisieren dann die ActionChains und benutze die move_to_element () Methode, um von zu Hause zu Elektronik- und Mobiltelefonen zu wechseln. Einmal auf der Registerkarte Handy und Zubehör, klicken wir darauf. Damit all dies funktioniert.

Aktionen = ActionChains (Treiber)
Next_Step = Aktionen.MOVE_TO_ELEMENT (Home).Move_to_element (Elektronik)
nächster Schritt.MOVE_TO_ELEMENT (Handy).klicken()
nächster Schritt.ausführen()

Sie können jedoch verschiedene Aktionen mit der Maus ausführen - vom rechten Maustaste auf Drag & Drops. Lassen Sie uns ein Beispiel erhalten, in dem Sie mit der rechten Maustaste klicken können. Um mit der rechten Maustaste zu klicken, benötigen Sie die Methode context_click (). Geben Sie darin über das, was Sie klicken möchten. In diesem Fall möchten wir zunächst mit der rechten Maustaste auf die Schaltfläche klicken, also sagen wir den Treiber.context_click (button) - Klicken Sie mit der rechten Maustaste auf die Taste. Wenn das mit der Rechtsprechung angezeigte Klicken ein Auswahlmenü mit Optionen angezeigt wird, bitten wir ihn, auf eine der angezeigten Optionen zu klicken - klicken Sie auf (kopieren.

vom Selenium importieren Webdriver
Aus Selen.Webdriver Import ActionChains
von webdriver_manager.Chromimport Chromedrivermanager
Treiber = Webdriver.Chrom (Chromedrivermanager ().Installieren())
Treiber.Get ("https: // swisnl.Github.IO/JQuery-ContextMenu/Demo/Menü-Title.html ")
Taste = Treiber.find_element_by_xpath ("/html/body/div/div/div/div/div/p/span [1]")
Kopieren = Treiber.find_element_by_xpath ("/html/body/ul [1]/li [3]")
Aktionen = ActionChains (Treiber)
Aktionen.context_click (button).Klicken Sie auf (kopieren)
Aktionen.ausführen()

Sie können so viele Dinge mit Selenium machen, aber wir werden uns auch auf Drag & Drop ansehen. Es gibt zwei Möglichkeiten, ein Element in sein Zielziel zu schleppen und zu fallen. Einer verwendet die Methode Drag_and_drop (), und der andere verwendet eine kompliziertere Technik:

vom Selenium importieren Webdriver
Aus Selen.Webdriver Import ActionChains
von webdriver_manager.Chromimport Chromedrivermanager
Importzeit
Treiber = Webdriver.Chrom (Chromedrivermanager ().Installieren())
Treiber.Get ("http: // www.dhtmlgoodies.com/scripts/Drag-drop-nodes/Drag-drop-nodes-demo3.html ")
Treiber.implizit_wait (1)
Treiber.maximize_window ()
# Wählen Sie das Quellbild auf der Seite zum Ziehen
Quelle = Treiber.find_element_by_id ("node2")
# Wählen Sie das Ziel aus, an dem Sie es fallen lassen möchten
Ziel = Treiber.find_element_by_xpath ("//*[@id = 'box1']"))
Zeit.Schlaf (5)
# Initialisieren Sie die ActionChains
action_chains = actionChains (Treiber)
# Bewegen Sie die Quelle auf das Ziel
action = action_chains.klick_and_hold (Quelle) \
.MOVE_TO_ELEMENT (Ziel) \
.Release (Ziel) \
.Klicken Sie auf (Ziel) \
.ausführen()

Selen ist ein sehr leistungsfähiges Werkzeug, um sehr viele Dinge zu tun. In diesem Tutorial haben wir einige der Dinge behandelt, die Selen tun kann. Sobald Sie sich damit vertraut machen, können Sie alle möglichen Bots erstellen, um den Browser zu automatisieren.

Glückliche Codierung!