CodeGym /Kurse /Python SELF DE /Automatisierung der Arbeit mit Formularen und Buttons auf...

Automatisierung der Arbeit mit Formularen und Buttons auf einer Webseite zur Datensammlung

Python SELF DE
Level 37 , Lektion 3
Verfügbar

1. Technische Grundlagen

Formulare ausfüllen und abschicken

Die Arbeit mit Formularen ist oft notwendig, um User-Registrierungen, Umfragen oder Datensammlungen zu automatisieren. Wenn du hunderte Formulare ausfüllen musst, ist das manuell wie der Versuch, eine Wassermelone durch einen Strohhalm zu essen. Mit unseren Superkräften von Selenium erledigen wir das in wenigen Sekunden.

Werfen wir zuerst einen Blick darauf, wie wir Textfelder ausfüllen und Formulare abschicken können. Anhand eines typischen Login-Formulars auf einer Webseite lernen wir die grundlegenden Schritte kennen:

Python

from selenium import webdriver

# Treiber einrichten (z.B. ChromeDriver)
driver = webdriver.Chrome()

try:
    # Webseite öffnen
    driver.get("https://example.com/login")

    # Eingabefeld für den Benutzernamen suchen und Text eingeben
    username_input = driver.find_element_by_name("username")
    username_input.send_keys("mein_login")

    # Eingabefeld für das Passwort suchen und Text eingeben
    password_input = driver.find_element_by_name("password")
    password_input.send_keys("mein_passwort")

    # Sende-Button des Formulars suchen und darauf klicken
    submit_button = driver.find_element_by_name("submit")
    submit_button.click()

finally:
    # Treiber schließen
    driver.quit()
    

Validierung und Fehlerbehandlung

Nichts nervt Programmierer mehr als unerwartete Fehler. Daher behandeln wir diese im Voraus. Mit try/except fangen wir Fehler ab und erstellen Logs, um zu verstehen, was schiefgelaufen ist.

Python

try:
    username_input = driver.find_element_by_name("username")
    username_input.send_keys("mein_login")
except Exception as e:
    print(f"Fehler beim Ausfüllen des Benutzernamens: {e}")
    logging.error("Fehler beim Ausfüllen des Benutzernamens", exc_info=True)
    

2. Checkboxes

Nun, da wir gelernt haben, Buttons zu klicken, probieren wir aus, wie man mehrere Optionen aus einer Liste auswählt. Um ein Häkchen zu setzen oder zu entfernen, kann man die Methode click() benutzen. Wenn du prüfen möchtest, ob ein Häkchen gesetzt ist, kannst du das Attribut is_selected() verwenden.

Python

checkbox = driver.find_element_by_id("checkbox_id")
if not checkbox.is_selected():
    checkbox.click()
    

3. Radio Buttons

Radio Buttons erlauben es, nur eine Option aus mehreren auszuwählen. Die Arbeit mit ihnen erfolgt ähnlich wie mit Checkboxes: Man wählt eine Option mit der Methode click() und prüft den Zustand mit is_selected().

Python

radio_button = driver.find_element_by_id("radio_button_id")
if not radio_button.is_selected():
    radio_button.click()
    

4. Dropdowns

Dropdowns enthalten mehrere Auswahlmöglichkeiten. Selenium bietet die Klasse Select, die Methoden zur Arbeit mit solchen Listen bereitstellt.

Python

from selenium.webdriver.support.ui import Select

dropdown = Select(driver.find_element_by_id("dropdown_id"))
dropdown.select_by_visible_text("Option 1")
    

Es ist auch möglich, Optionen mit select_by_index() oder select_by_value() auszuwählen.

5. Text Areas

Textbereiche ähneln Textfeldern, werden aber normalerweise für größere Textmengen verwendet. Die Arbeit damit ist identisch wie bei normalen Textfeldern.

Python

text_area = driver.find_element_by_id("textarea_id")
text_area.send_keys("Das ist ein Beispieltext für den Textbereich.")
    

6. Date Picker

Kalenderfelder erlauben es Nutzern, ein Datum auszuwählen. Wenn es sich um ein normales Textfeld handelt, das das Datumsformat unterstützt, kann man send_keys() verwenden, um den Wert im gewünschten Format einzugeben.

Python

date_field = driver.find_element_by_id("date_field_id")
date_field.send_keys("2023-12-25")  # Das Datumsformat kann je nach Webseite variieren
    

Einige Kalenderfelder erfordern jedoch zusätzliche Aktionen, wie das Öffnen eines Popup-Kalenders und die Auswahl eines Datums.

7. File Upload

Diese Felder erlauben das Hochladen von Dateien auf den Server. Man kann mit ihnen interagieren, indem man die Methode send_keys() verwendet und den Pfad zur Datei auf dem lokalen Rechner angibt.

Python

file_input = driver.find_element_by_id("file_upload_id")
file_input.send_keys("/path/to/file.txt")
    

8. Hidden Fields

Versteckte Felder sind auf der Seite nicht sichtbar, können aber zur Speicherung von Informationen verwendet werden, die für das Absenden eines Formulars notwendig sind. Man kann mit ihnen interagieren, wenn man Zugriff auf ihren Wert hat (z.B. zur Prüfung oder Änderung).

Python

hidden_field = driver.find_element_by_id("hidden_field_id")
value = hidden_field.get_attribute("value")
print("Versteckter Feldwert:", value)
    

9. Überprüfung der Erfolgsquote

Das Abrufen von Daten zum Status von Aktionen ist dein Erfolgsindikator. Nach dem Absenden eines Formulars möchtest du sicherstellen, dass deine Anfrage erfolgreich angenommen wurde, oder? Hier ist, wie du das machen kannst:

Python

# Erfolgreiche Anmeldung auf der Webseite überprüfen
if "Willkommen" in driver.page_source:
    print("Anmeldung war erfolgreich!")
else:
    print("Beim Anmelden ist ein Fehler aufgetreten.")
    

10. Probleme und Lösungen

Probleme

  • Instabilität der Arbeit: Webseiten ändern sich oft. Änderungen in der Seitenstruktur können Skriptabstürze verursachen, daher ist regelmäßiges Überprüfen des Codes notwendig.
  • Abhängigkeit von der Netzwerkgeschwindigkeit: Die Ladezeit von Seiten und Elementen kann variieren. Verwende explizite Wartezeiten (explicit waits), um Verzögerungen zu handhaben.

Lösungen

  • Logging: Führe Logs über alle Aktionen, um Probleme besser zu verstehen. Die Verwendung der logging-Bibliothek erleichtert das Logging erheblich.
  • Modularität des Codes: Teile komplexe Aktionen in Funktionen und Module auf, um Änderungen leichter vornehmen und testen zu können.
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION