CodeGym /Java-Kurse /Python SELF DE /Suche von Elementen anhand von HTML-Attributen: id, class...

Suche von Elementen anhand von HTML-Attributen: id, class

Python SELF DE
Level 35 , Lektion 3
Verfügbar

1. Grundlagen der Elementsuche

Methoden zur Suche von Elementen

Bevor wir in den Code eintauchen, ist es wichtig zu verstehen, wie genau wir mit Selenium Elemente auf einer Webseite suchen können. Selenium bietet eine Reihe praktischer Methoden zur Suche nach Elementen:

  • find_element_by_id(): Sucht ein Element anhand seiner einzigartigen ID (id).
  • find_element_by_name(): Ermöglicht die Suche eines Elements mittels seines Attributs name.
  • find_element_by_class_name(): Sucht Elemente, die eine bestimmte Klasse (class) haben.
  • find_element_by_tag_name(): Verwendet den Tag-Namen, um Elemente zu finden, z. B. div, p, a.

Fangen wir mit einem einfachen Beispiel an – der Suche nach einem Element anhand der id. Stell dir vor, wir haben einen Button mit der Aufschrift "Magischer Button" verloren, und müssen ihn finden:

Python

from selenium import webdriver

# Konfiguration des Drivers und Öffnen des Browsers
driver = webdriver.Chrome()
driver.get('https://example.com')

# Suche eines Elements anhand seiner id
magic_button = driver.find_element_by_id('magic_button_id')

# Arbeit mit dem gefundenen Element (z. B. Extrahieren des Textes)
print(magic_button.text)

# Beenden der Sitzung
driver.quit()

Arbeiten mit gefundenen Elementen

Nachdem wir ein Element gefunden haben, ist es an der Zeit zu entscheiden, was wir damit machen. Lass deiner Fantasie freien Lauf und nutze Selenium-Methoden, wie text für das Abrufen des Textinhalts des Elements oder get_attribute('attribute_name'), um den Wert eines beliebigen Attributs des Elements zu extrahieren.

Angenommen, unser Element ist ein Link und wir möchten wissen, wohin er führt. So machen wir das:

Python

# Suche eines Elements mit einem Link
link_element = driver.find_element_by_class_name('link_class')

# Extrahieren der URL aus dem Attribut href
link_url = link_element.get_attribute('href')
print(f'Dieser Link führt zu: {link_url}')

2. Methode find_element_by_id()

Die Methode find_element_by_id() ist eine der schnellsten und zuverlässigsten Möglichkeiten, ein Element auf einer Webseite zu suchen. Sie erlaubt es, Elemente anhand ihres einzigartigen Attributs id zu finden. Im HTML ist das Attribut id ein einzigartiger Bezeichner, daher kann man sicher sein, dass die Methode das einzige benötigte Element zurückgibt.

Beispiel:

Python

element = driver.find_element_by_id("submit-button")

In diesem Beispiel sucht Selenium ein Element mit id="submit-button" und speichert es in der Variable element. Dieser Ansatz ist nützlich, um Buttons, Formulare, Eingabefelder und andere einzigartige Elemente zu finden, die selten auf der Seite dupliziert werden.

Wann nutzen?

Die Verwendung von find_element_by_id() wird immer empfohlen, wenn das Element eine einzigartige id hat, da diese Methode einen schnellen und präzisen Zugriff auf das Element ermöglicht.

2. Methode find_element_by_name()

Die Methode find_element_by_name() sucht Elemente anhand ihres Attributs name. Sie wird häufig für Formulare und Eingabefelder verwendet, insbesondere, wenn Elemente denselben Klasse- oder id-Wert haben, aber unterschiedliche name-Werte. Anders als id muss das Attribut name nicht zwingend einzigartig sein, und auf der Seite können mehrere Elemente mit demselben name vorhanden sein.

Beispiel:

Python

element = driver.find_element_by_name("username")

Dieser Code sucht ein Element mit name="username". Normalerweise handelt es sich dabei um ein Eingabefeld für einen Benutzernamen in Login-Formularen.

Wann nutzen?

Diese Methode ist nützlich, wenn das Element auf der Seite keine einzigartige id hat, aber ein name-Attribut angegeben ist. Sie ist besonders effizient für Eingabeformulare, wo Elemente häufig anhand ihres name-Attributs identifiziert werden.

3. Methode find_element_by_class_name()

Die Methode find_element_by_class_name() sucht ein Element anhand seiner Klasse (class). Sie ist praktisch, wenn man mit CSS arbeitet, und erlaubt das Auffinden von Elementen mit derselben stilistischen Gestaltung. Zu beachten ist, dass eine class mehreren Elementen zugewiesen werden kann, daher ist es wichtig, eine einzigartige Klasse zu präzisieren oder eine andere Methode zu verwenden, wenn nur ein bestimmtes Element gesucht wird.

Beispiel:

Python

element = driver.find_element_by_class_name("main-header")

In diesem Beispiel sucht Selenium das erste Element mit der Klasse main-header.

Wann nutzen?

find_element_by_class_name() wird oft verwendet, um Überschriften, Buttons und andere stilisierte Elemente zu finden. Diese Methode ist besonders nützlich, wenn Elemente keine eindeutige id oder name haben und nach ihren stilistischen Merkmalen gesucht werden muss.

4. Methode find_element_by_tag_name()

Die Methode find_element_by_tag_name() sucht Elemente anhand ihres Tag-Namens, z. B. div, p, a, input. Sie ist nützlich, wenn man alle Elemente eines bestimmten Typs erhalten möchte, besonders wenn die Struktur der Seite eine leichte Orientierung nach Tags zulässt.

Beispiel:

Python

element = driver.find_element_by_tag_name("h1")

Hier sucht Selenium das erste Element mit dem h1-Tag, das üblicherweise für Überschriften auf der Seite verwendet wird.

Wann nutzen?

Die Methode find_element_by_tag_name() eignet sich gut für die Suche nach Überschriften, Bildern, Absätzen und anderen Elementen, die auf der Seite mit einem bestimmten Tag-Typ dargestellt werden. Da es jedoch viele Elemente mit demselben Tag-Typ auf der Seite geben kann, zeigt diese Methode nicht immer genau auf ein bestimmtes Element.

5. Besonderheiten und Fehler

Bevor wir weitermachen, nehmen wir uns kurz Zeit und würdigen die Vielfalt von HTML. Manchmal können Elemente wie Buttons oder Bilder keine einzigartigen IDs oder Klassen haben. In solchen Fällen kommen komplexere Suchmethoden wie XPath und CSS-Selektoren zum Einsatz, über die wir in der nächsten Vorlesung sprechen werden. Aber wenn du jetzt schon mit solchen Elementen konfrontiert bist, keine Panik. Das ist nur ein Teil des Spaßes in der Welt der Web-Automatisierung.

Fragilität von Selektoren

Beim Arbeiten mit Attributen wie id und class solltest du bedenken, dass sie sich ändern können. Das Finden eines Elements anhand seiner id, die sich plötzlich geändert hat, kann zu einem Fehler führen. Dies ist besonders relevant für dynamisch generierte Seiten, bei denen Bezeichner zufällig sein können. Lösung? Verwende stabilere Attribute oder kombinierte Ansätze.

6. Praktische Anwendung

Jetzt wissen wir, wie man Elemente anhand von id, Klasse und Name sucht. Der Nutzen dieses Wissens ist enorm, insbesondere wenn es um die Automatisierung der Interaktion mit Webseiten geht. Erfolgreich gefundene Elemente können verwendet werden, um Formulare auszufüllen, Buttons zu drücken oder Informationen zu extrahieren – Aktionen, die deine Arbeit erheblich beschleunigen und dich von monotonen Aufgaben befreien können.

Stell dir eine Firma vor, in der jeder Mitarbeiter täglich 10 Minuten damit verbringt, dasselbe Formular auf einer Webseite auszufüllen. Hier kommt Selenium ins Spiel: Es schafft die ganze Routine in wenigen Minuten, während du deinen Morgenkaffee genießt.

Für diejenigen, die bereits an realen Anwendungsfällen interessiert sind, wird die Automatisierung mit Selenium zum Testen von Web-Anwendungen, zur Überwachung von Änderungen auf Webseiten und sogar zum schnellen Wiederherstellen eines vergessenen Passworts in deinem Lieblingsnetzwerk verwendet, falls Algorithmen plötzlich entscheiden, dass du auf diesen Panda-Fotos nicht du bist.

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION