1. Einführung in die Interaktion mit Formularelementen
Formulare auf Webseiten sind die Orte, an denen die Magie der Interaktion beginnt. Stell dir ein Formular wie ein mysteriöses Steuerpult vor, das dem Benutzer erlaubt, mit dem System zu kommunizieren. Aber statt Anweisungen an einen Saugroboter zu geben, stellen wir Informationen der Webseite bereit.
Wie man Text in Textfelder eingibt
Lass uns zunächst besprechen, wie Selenium uns ermöglicht, Text in Textfelder einzugeben. Das geschieht mit der Methode send_keys()
. Lass uns Schritt für Schritt eintauchen.
from selenium import webdriver
# Pfad zum Webdriver festlegen, das ist der Pfad zu deiner Webdriver-Kopie
driver = webdriver.Chrome(executable_path='path/to/chromedriver')
# Webseite öffnen
driver.get('http://example.com/login')
# Eingabefeld finden (z. B. nach id) und Text eingeben
username_field = driver.find_element_by_id('username')
username_field.send_keys('mein_super_Account')
password_field = driver.find_element_by_id('password')
password_field.send_keys('mein_super_geheimes_Passwort')
In diesem einfachen Beispiel öffnen wir die Seite und finden die Eingabeelemente nach ihrer ID
. Danach nutzen wir die Methode send_keys()
, um Text in die Felder einzugeben. Ja, so einfach ist es, als würde man copy-paste auf ein neues Level bringen!
Ein nützlicher Trick für das Ausfüllen von Textfeldern
Wenn dir vorkommt, dass sich ein Formular seltsam verhält, könnte es sein, dass im Eingabefeld bereits Text steht. Bevor neuer Text eingegeben wird, lösche den alten mit der Methode clear()
.
username_field.clear()
username_field.send_keys('neuer_Wert')
Dieser kleine Trick wird dich vor unnötigen Kopfschmerzen retten, ehrlich!
2. Klick auf Buttons
Jetzt, da unsere Eingabefelder gefüllt sind, ist es an der Zeit, auf einen Button zu klicken, z. B. um das Formular abzusenden. Mit Selenium geschieht dies mit der Methode click()
. So ähnlich, wie du auf den Button "Mehr Memes ansehen" klickst, nur eben programmatisch.
# Button nach Namen finden und klicken
login_button = driver.find_element_by_name('login')
login_button.click()
Und voilà, unser Selenium-Skript ist nun ein Klick-Meister, der mehr drauf hat, als nur auf den Button "Entscheidung treffen" in Spielen zu klicken!
Verwendungsbeispiele
Schauen wir uns ein Beispiel an, das die Nutzung der Methoden send_keys()
und click()
kombiniert, um ein Registrierungsformular auszufüllen und abzusenden.
# Registrierungsseite öffnen
driver.get('http://example.com/register')
# Registrierungsformular ausfüllen
driver.find_element_by_id('first_name').send_keys('Ivan')
driver.find_element_by_id('last_name').send_keys('Ivanov')
driver.find_element_by_id('email').send_keys('ivan@example.com')
driver.find_element_by_id('password').send_keys('superGeheim123')
# Klick auf den Button "Registrieren"
register_button = driver.find_element_by_css_selector('.register-button')
register_button.click()
Dieses einfache Beispiel zeigt, wie du den Registrierungsprozess auf einer Webseite automatisieren kannst. Es kann nützlich sein, um ein Registrierungsformular zu testen und Benutzeraktivitäten zu simulieren.
3. Umgang mit unkooperativen Formularen
Manchmal möchten Seiten einen aus Spaß herausfordern. Du klickst auf einen Button, und nichts passiert. Oder schlimmer — es tritt ein Fehler auf. Lass uns einige häufige Probleme und deren Lösungen besprechen.
Arbeiten mit dynamischen Elementen
Manchmal laden Elemente auf der Seite nicht sofort. In solchen Fällen könnte dein Skript versuchen, mit einem Element zu interagieren, bevor es geladen wurde. Das ist so, als würdest du mit dem Kochen eines Omeletts beginnen, bevor die Eier aus dem Kühlschrank sind.
Um diesen Schwierigkeiten vorzubeugen, nutze Wartezeiten. Selenium erlaubt es dir, zu warten, bis ein Element verfügbar ist:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# Warten, bis das Element anklickbar ist, bevor geklickt wird
register_button = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.CSS_SELECTOR, '.register-button'))
)
register_button.click()
Mit WebDriverWait
kannst du Selenium anweisen, zu warten, bis das Element bereit für Aktionen ist. Das erhöht die Zuverlässigkeit deines Skripts erheblich.
Interaktion mit unsichtbaren Elementen
Einige Elemente auf der Seite könnten unsichtbar sein – beispielsweise versteckte Buttons oder Felder. Das kann einen Fehler verursachen, wenn versucht wird, damit zu interagieren. In diesem Fall kannst du das Element mit JavaScript sichtbar machen:
driver.execute_script("arguments[0].style.visibility='visible';", hidden_element)
hidden_element.click()
Diese Methode erlaubt es dir, mit versteckten Elementen zu interagieren, die aus irgendeinem Grund verborgen sind.
4. Praktischer Einsatz: Formularautomatisierung
Jetzt, wo wir verstanden haben, wie mit Formularen interagiert wird, lass uns überlegen, wo das im realen Leben Anwendung finden könnte.
Dein Chef hat entschieden, dass alle täglich Berichte über ein Webformular einreichen sollen. Und du möchtest diesen langweiligen Prozess natürlich etwas automatisieren. Mit Selenium kannst du ein Skript erstellen, das die Formularfelder automatisch ausfüllt und den Bericht jeden Tag absendet.
Automatisierung täglicher Berichte
Stell dir vor, wir haben eine Webseite mit einem Formular für tägliche Berichte. Das Formular enthält Felder für deinen Namen, die Abteilung und den Bericht über die erledigte Arbeit. Lass uns das automatisieren:
driver.get('http://example.com/daily_report')
# Berichtformular ausfüllen
driver.find_element_by_id('name').send_keys('Anna Petrova')
driver.find_element_by_id('department').send_keys('Technologie')
driver.find_element_by_id('report').send_keys('Heute habe ich alle Bugs gefixt!')
# Formular absenden
submit_button = driver.find_element_by_id('submit')
submit_button.click()
Solch ein Skript kann wertvolle Zeit sparen und menschliche Fehler vermeiden. Beachte, dass bei komplexeren Formularen jeder Schritt getestet werden muss und mögliche Fehler berücksichtigt werden sollten.
Und das war's für unsere heutige Vorlesung! Heute haben wir gelernt, wie man Text in Felder eingibt und Buttons klickt wie bei einem Online-Umfragetool, was dir unglaubliche Automatisierungskraft für deine Interaktion mit Webseiten verleiht.
Experimentiere weiter mit Selenium und bleib bei uns, um mehr darüber zu erfahren, wie du deinen Browser in eine echte Automatisierungsmaschine verwandeln kannst!
GO TO FULL VERSION