Effizientes Scrollen in Selenium-Webtests umsetzen: So geht's

Zuletzt aktualisiert am November 3, 2025

Wer schon mal versucht hat, eine moderne Webanwendung zu automatisieren, kennt das Problem: Das Selenium-Skript klickt auf einen Button – und nichts passiert. Oft liegt das daran, dass das Element außerhalb des sichtbaren Bereichs liegt oder die Seite beim Scrollen noch weitere Inhalte nachlädt. Willkommen in der Welt der dynamischen, endlos scrollenden Webseiten, bei denen automatisierte Tests nur dann wirklich funktionieren, wenn sie sich wie ein echter Nutzer verhalten. Nach vielen Jahren in der Webautomatisierung kann ich sagen: Effizientes Scrollen mit Selenium ist kein nettes Extra, sondern entscheidet darüber, ob deine Tests stabil laufen oder ständig fehlschlagen.

In diesem Beitrag zeige ich dir, warum gezieltes Scrollen in Selenium so wichtig ist, welche Methoden sich für verschiedene Herausforderungen – von Lazy-Loading-Listen bis zu fixierten Kopfzeilen – bewährt haben und wie Tools wie deinen Workflow richtig pushen. Ich teile praxisnahe Codebeispiele, browser-spezifische Tipps und Erfahrungen aus echten Projekten – damit du dich auf aussagekräftige Testergebnisse verlassen kannst, statt dich mit fehleranfälligen Tests herumzuärgern.

Grundlagen: Was bedeutet Scrollen mit Selenium?

Was heißt eigentlich „Scrollen mit Selenium“? Im Kern geht’s darum, den sichtbaren Bereich des Browsers gezielt zu verschieben – nach oben, unten, seitlich oder direkt zu einem bestimmten Element. Nur so wird der gewünschte Inhalt sichtbar und kann automatisiert angesprochen werden. Selenium WebDriver scrollt standardmäßig nicht automatisch. Versuchst du, ein Element außerhalb des Viewports zu klicken, bekommst du oft eine ElementNotInteractableException (). Deshalb ist gezieltes Scrollen unverzichtbar für stabile UI-Tests.

Die wichtigsten Scroll-Varianten in Selenium:

  • Vertikales Scrollen: Seite nach oben oder unten bewegen, um mehr Inhalte sichtbar zu machen.
  • Horizontales Scrollen: Praktisch bei breiten Tabellen oder Karussells.
  • Zu einem Element scrollen: Ein bestimmtes Element in den sichtbaren Bereich holen, meist mit scrollIntoView.
  • Scrollen um Pixel: Den Viewport um eine feste Pixelanzahl verschieben – ideal für schrittweises Scrollen.
  • Zum Seitenanfang/-ende springen: Direkt ganz nach oben oder unten scrollen.

Warum ist das so wichtig? Moderne Webseiten bestehen oft aus dynamischen Elementen – etwa endlosen Feeds, „Mehr laden“-Buttons, fixierten Kopfzeilen oder Bildern, die erst beim Scrollen geladen werden. Ohne Scrollen sieht dein Test nur einen Bruchteil der Oberfläche – und übersieht Fehler oder schlägt aus den falschen Gründen fehl ().

Typische Stolperfallen:

  • Ein gefundenes Element ist nicht automatisch sichtbar oder anklickbar.
  • Methoden wie .click() oder .sendKeys() scrollen nicht selbstständig zum Element.
  • Fixierte Kopfzeilen können Elemente verdecken, auch nach dem Scrollen.
  • Endlos-Scrollseiten erfordern wiederholtes, schrittweises Scrollen, um alle Inhalte zu laden.

Ein kurzes Java-Beispiel, um ein Element sichtbar zu machen:

1((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element);

Damit wird das Ziel-Element ganz oben im Viewport angezeigt – und Interaktionsfehler gehören der Vergangenheit an.

Warum effizientes Scrollen für Selenium-Tests entscheidend ist

Fakt ist: Die meisten modernen Webanwendungen laden Inhalte erst beim Scrollen nach. Laut aktuellen Zahlen nutzen über – die tatsächliche Zahl dürfte noch viel höher liegen. Wer in Selenium nie scrollt, testet nur einen Bruchteil der Anwendung. ChatGPT Image Nov 3, 2025, 02_44_20 PM (1).png Typische Szenarien, in denen Scrollen nötig ist:

  • Endlos- oder Lazy-Loading-Listen: Social Feeds, Produktübersichten, Dashboards.
  • „Mehr laden“-Buttons: Shops, Newsportale, Branchenverzeichnisse.
  • Versteckte Buttons oder Links: Elemente, die erst nach dem Scrollen erscheinen.
  • Fixierte Kopfzeilen: Können Inhalte verdecken – exaktes Scrollen ist nötig.
  • Große Tabellen oder Karussells: Oft ist nur ein Teil sichtbar, der Rest muss durch Scrollen geprüft werden.
TestszenarioWarum Scrollen nötig ist
Endloser Content-Feed (z.B. Social Media)Neue Beiträge laden erst beim Scrollen. Tests müssen mehrfach scrollen, um alles zu prüfen.
„Mehr laden“-PaginierungZusätzliche Einträge erscheinen erst nach Scroll/Klick im DOM.
Lazy-Loading-BilderBilder werden erst beim Scrollen geladen – Tests müssen scrollen, um alle zu prüfen.
Fixierte Kopfzeile überlappt InhalteElemente können verdeckt sein – Scrollen muss das berücksichtigen.
Große scrollbare Tabellen/KarussellsNur ein Teil ist sichtbar; Tests müssen scrollen, um alle Zeilen/Elemente zu validieren.

Vorteile:

  • Bessere Testabdeckung: Alle UI-Elemente werden geprüft, nicht nur die beim Laden sichtbaren.
  • Weniger manueller Aufwand: Keine aufgeteilten Tests oder manuelles Nachscrollen mehr nötig.
  • Zuverlässigere Automatisierung: Weniger Fehlalarme durch „Element nicht gefunden“ oder „nicht interagierbar“.

Stell dir einen Onlineshop mit 100 Produkten vor, von denen jeweils nur 20 geladen werden. Ein Test ohne Scrollen prüft nur 20 % des Sortiments – 80 % bleiben ungetestet. Mit effizientem Scrollen entgeht dir kein Fehler mehr. ChatGPT Image Nov 3, 2025, 02_39_42 PM (1).png

Alle Scroll-Methoden im Vergleich: So scrollst du mit Selenium

Selenium bietet keinen einfachen „scrollDown()“-Befehl, aber verschiedene Möglichkeiten, das Ziel zu erreichen. Hier ein Überblick:

MethodeBrowser-SupportKomplexitätBestes Einsatzgebiet
Actions API (Wheel input)Chrome, Edge (Selenium 4)MittelPräzises, natives Scrollen zu Elementen/Offsets
JavaScriptExecutorAlle BrowserEinfachZu Elementen, per Pixel oder ans Seitenende
Tastatur (Page Down etc.)Alle BrowserEinfachScrollen wie ein Nutzer per Tastatur
Scrollen in ContainernAlle BrowserMittelScrollen in Tabellen, Karussells, speziellen Bereichen

Zu Elementen und per Pixel scrollen

Zu einem Element scrollen:
Ideal, wenn du genau weißt, was du sehen willst.

1js.executeScript("arguments[0].scrollIntoView();", webElement);

Oder mit Selenium 4 Actions API (Chrome/Edge):

1new Actions(driver).scrollToElement(element).perform();

Per Pixel scrollen:
Gut für schrittweises Scrollen oder Feintuning der Position.

1js.executeScript("window.scrollBy(0, 350)", "");

Positive Werte scrollen nach unten, negative nach oben.

Wann welche Methode?

  • Für Präzision und Zuverlässigkeit: zu Element scrollen.
  • Für schrittweises Nachladen, Parallax-Effekte oder nutzerähnliches Verhalten: per Pixel scrollen.

Zum Seitenanfang/-ende und Endlos-Scrollen

Zum Seitenende scrollen:

1js.executeScript("window.scrollTo(0, document.body.scrollHeight)");

Zum Seitenanfang scrollen:

1js.executeScript("window.scrollTo(0, 0)");

Endlos-Scrollen umsetzen:
Hier brauchst du eine Schleife: scrollen, auf neue Inhalte warten, wiederholen, bis nichts mehr nachgeladen wird.

1long lastHeight = (Long) js.executeScript("return document.body.scrollHeight");
2while (true) {
3    js.executeScript("window.scrollTo(0, document.body.scrollHeight);");
4    Thread.sleep(2000); // In echten Tests besser explizite Waits nutzen!
5    long newHeight = (Long) js.executeScript("return document.body.scrollHeight");
6    if (newHeight == lastHeight) break;
7    lastHeight = newHeight;
8}

So stellst du sicher, dass wirklich alle Inhalte geladen werden – wie bei einem echten Nutzer ().

Individuelles Scrollen mit execute_script in Selenium

Für alles, was über die Standardfälle hinausgeht, ist JavaScripts execute_script dein bester Freund. Damit kannst du:

  • Schrittweise und flüssig scrollen, wie ein Nutzer.
  • Nach jedem Scrollen auf neue Inhalte warten.
  • In bestimmten Containern (z.B. Tabellen, Karussells) scrollen.
  • Spezialfälle abdecken (z.B. fixierte Kopfzeilen, dynamische Elemente).

Beispiel: Sanftes, schrittweises Scrollen

1for i in range(10):
2    driver.execute_script("window.scrollBy(0, 500);")
3    time.sleep(0.5)

Beispiel: Nach dem Scrollen auf Inhalte warten

1js.executeScript("window.scrollTo(0, document.body.scrollHeight);");
2WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
3wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("new_element")));

Best Practices:

  • Kombiniere Scrolls immer mit expliziten Waits auf neue Inhalte.
  • Nutze {block: "center"} bei scrollIntoView für bessere Sichtbarkeit, falls nötig.
  • Vermeide feste Sleeps – setze auf Waits, die an echte Inhaltsänderungen gekoppelt sind.
  • Für Container: element.scrollTop = ... oder element.scrollBy(...) per JS verwenden.

Scrollen in Selenium für verschiedene Browser optimieren

Jetzt wird’s spannend: Nicht jeder Browser scrollt gleich.

  • Chrome/Edge: Volle Unterstützung für Actions API und JavaScript.
  • Firefox: Gute JS-Unterstützung, Actions API nur teilweise. Für flüssiges Scrollen ggf. Anpassungen nötig.
  • Safari: Keine Actions API für Scrollen – hier nur JavaScript nutzen ().
  • Headless-Modus: Immer Fenstergröße setzen, sonst kann das Scrollverhalten abweichen.

Tipps:

  • Teste dein Scroll-Konzept frühzeitig in allen Ziel-Browsern.
  • JavaScript ist der universelle Fallback fürs Scrollen.
  • Bei fixierten Kopfzeilen ggf. ein paar Pixel mehr scrollen oder eigenes JS nutzen, um Überlappungen zu vermeiden.
  • Im Headless-Modus mit driver.manage().window().setSize(...) für konsistentes Verhalten sorgen.

Thunderbit: Selenium-Tests mit smarter Datenerfassung beschleunigen

Ein echter Geheimtipp: . Während Selenium den Browser steuert, brauchst du manchmal eine Lösung, um Daten effizient zu extrahieren – gerade bei Seiten mit viel Scrollen oder dynamischen Inhalten. Hier spielt Thunderbit seine Stärken aus.

So ergänzt Thunderbit Selenium:

  • Alle Daten erfassen, auch bei Endlos-Scroll: Thunderbits KI scrollt, paginiert und extrahiert strukturierte Daten (z.B. Produktnamen, Preise, Bilder) mit wenigen Klicks.
  • Referenzdaten für Tests generieren: Mit Thunderbit schnell alle erwarteten UI-Daten sammeln und dann mit Selenium die Oberfläche prüfen.
  • Testentwicklung beschleunigen: Thunderbits „KI-Feldvorschläge“ helfen bei der Auswahl von Selektoren und Strukturen – das spart Zeit beim Schreiben von Selenium-Lokatoren.

Beispiel-Workflow:

  1. Mit Thunderbit alle Produkte einer dynamischen Shopseite extrahieren (inklusive Scrollen und Datenerfassung).
  2. Daten nach Google Sheets oder als CSV exportieren.
  3. Im Selenium-Test durch die Seite scrollen, sichtbare Produktinfos sammeln und mit dem Thunderbit-Datensatz abgleichen.
  4. Prüfen, ob alle Produkte korrekt geladen und keine Daten verloren gegangen sind.

So sparst du dir fehleranfälligen Scraping-Code und kannst dich auf die Validierung konzentrieren. Besonders praktisch: Thunderbits und geplante Extraktionen für große, dynamische Seiten.

Praxisbeispiele: Effizientes Scrollen in echten Selenium-Tests

Jetzt wird’s konkret. Hier ein paar typische Szenarien und Codebeispiele:

1. Durch eine große Tabelle scrollen

Angenommen, du hast ein Datenraster mit eigenem Scrollbalken:

1WebElement table = driver.findElement(By.id("data-table"));
2js.executeScript("arguments[0].scrollTop = arguments[0].scrollHeight", table);

Damit scrollst du ans Tabellenende. Für die Validierung jeder Zeile kannst du schrittweise scrollen.

2. Endlos-Feeds vollständig laden

1prev_count = 0
2while True:
3    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
4    time.sleep(2)
5    posts = driver.find_elements(By.CSS_SELECTOR, ".post")
6    if len(posts) == prev_count:
7        break
8    prev_count = len(posts)

Lädt alle Beiträge und stoppt, wenn keine neuen mehr erscheinen.

3. Lazy-Loading-Bilder prüfen

1List<WebElement> images = driver.findElements(By.tagName("img"));
2for (WebElement img : images) {
3    if ("lazy".equals(img.getAttribute("loading"))) {
4        js.executeScript("arguments[0].scrollIntoView(true);", img);
5        WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
6        wait.until(d -> (Boolean) ((JavascriptExecutor)d).executeScript("return arguments[0].complete && arguments[0].naturalWidth &gt; 0;", img));
7        Assert.assertTrue((Integer) js.executeScript("return arguments[0].naturalWidth;", img) &gt; 0);
8    }
9}

Scrollt jedes Lazy-Image ins Sichtfeld und prüft, ob es geladen wurde.

4. Horizontal in einem Karussell scrollen

1WebElement carousel = driver.findElement(By.className("carousel"));
2js.executeScript("arguments[0].scrollBy(300, 0);", carousel);

Scrollt das Karussell um 300px nach rechts.

5. Ladefehler erkennen

Nach jedem Scrollen mit expliziten Waits prüfen, ob neue Inhalte oder Ladesymbole erscheinen. Bei Timeout Zustand protokollieren und Fehler melden.

Schritt-für-Schritt: Effizientes Scrollen mit Selenium umsetzen

Deine praktische Checkliste:

  1. Erkennen, wann Scrollen nötig ist: Sind Inhalte versteckt, lazy-loaded oder paginiert?
  2. Elemente im DOM prüfen: Mit expliziten Waits sicherstellen, dass Elemente vorhanden sind.
  3. Passende Scroll-Methode wählen:
    • Zu Elementen scrollen für Präzision.
    • Per Pixel scrollen für schrittweises Nachladen.
    • Schleifen für Endlos-Scroll.
  4. Scrollen umsetzen: JavaScript oder Actions API je nach Bedarf nutzen.
  5. Nach jedem Scrollen synchronisieren: Auf neue Inhalte warten – keine festen Sleeps verwenden.
  6. Inhalte validieren: Nach dem Scrollen prüfen, ob Elemente sichtbar, geladen und interagierbar sind.
  7. Für alle Browser optimieren: In allen Ziel-Browsern testen; JS als Fallback nutzen.
  8. Thunderbit für Datenerfassung integrieren: Große Datensätze vorab mit Thunderbit extrahieren oder validieren.
  9. Unnötiges Scrollen vermeiden: Nur so viel scrollen wie nötig.
  10. Logik dokumentieren: Kommentiere, warum du welche Scroll-Methode gewählt hast.
SchrittWichtige Aktion
Bedarf erkennenIst Scrollen in diesem Szenario nötig?
Element-PräsenzAuf Elemente im DOM warten
Methode wählenElement, Pixel, Schleife oder Container
UmsetzenJS/Actions/Keys je nach Bedarf einsetzen
SynchronisierenNach jedem Scrollen auf Inhalte warten
ValidierenSichtbarkeit und Korrektheit prüfen
Browser optimierenIn Chrome, Firefox, Edge, Safari testen
Thunderbit integrierenFür Datenerfassung/Validierung nutzen
MinimierenÜberflüssiges Scrollen vermeiden
DokumentierenVorgehen kommentieren und begründen

Fazit & wichtigste Erkenntnisse

Effizientes Scrollen ist das Rückgrat moderner, robuster Selenium-Tests. Mit dynamischen Inhalten und endlosem Scrollen überall müssen deine Tests wie echte Nutzer scrollen, um die UI wirklich zu prüfen. Das zählt:

  • Gezielt scrollen: Erkenne, wann und wo Scrollen nötig ist – verlasse dich nicht darauf, dass Elemente sichtbar sind.
  • Die richtigen Tools nutzen: Für Präzision zu Elementen scrollen, für Flexibilität JavaScript, für natives Verhalten (wo möglich) die Actions API.
  • Synchronisieren und prüfen: Nach jedem Scrollen auf Inhalte warten und Sichtbarkeit/Korrektheit validieren.
  • Für alle Browser optimieren: Scroll-Logik überall testen, JavaScript als universellen Fallback nutzen.
  • Thunderbit einsetzen: Kombiniere Selenium mit , um Datenerfassung und Validierung zu beschleunigen – besonders bei scrollintensiven oder dynamischen Seiten.

Bereit, deine Selenium-Tests aufs nächste Level zu bringen? Probiere die für schnellere, intelligentere Testentwicklung. Noch mehr Tipps und Tutorials findest du im .

Viel Erfolg beim Scrollen – und auf dass deine Tests immer finden, was sie suchen!

FAQs

1. Warum kann Selenium manchmal nicht mit Elementen interagieren, die im DOM vorhanden sind?
Weil Selenium Elemente nicht automatisch ins Sichtfeld scrollt. Liegt ein Element außerhalb des Viewports, kann eine ElementNotInteractableException auftreten. Mit gezielten Scroll-Aktionen stellst du sicher, dass Elemente sichtbar sind, bevor du sie ansprichst.

2. Wie gehe ich am besten mit Endlos-Scroll-Seiten in Selenium um?
Mit einer Schleife: Zum Seitenende scrollen, auf neue Inhalte warten und wiederholen, bis nichts mehr nachgeladen wird. Immer explizite Waits auf Inhaltsänderungen nutzen, keine festen Sleeps.

3. Wie mache ich mein Scroll-Skript browserübergreifend robust?
JavaScripts execute_script ist die universellste Methode. Die Actions API funktioniert gut in Chrome/Edge, wird aber nicht überall unterstützt. Teste deine Logik in allen Ziel-Browsern.

4. Kann ich auch in Containern oder Tabellen scrollen, nicht nur auf der Hauptseite?
Ja! Mit JavaScript kannst du z.B. scrollTop oder scrollBy auf das Containerelement anwenden. Beispiel: js.executeScript("arguments[0].scrollTop = arguments[0].scrollHeight", tableElement);

5. Wie unterstützt Thunderbit die Selenium-Testautomatisierung?
Thunderbits KI-gestütztes Scraping extrahiert alle Daten auch von dynamischen oder endlos scrollenden Seiten und liefert Referenzdatensätze für deine Selenium-Tests. So kannst du UI-Inhalte leichter validieren und entwickelst Tests schneller – besonders bei komplexen, datenreichen Seiten.

Mehr zu Selenium, Web Scraping und Automatisierungs-Strategien findest du im .

KI-Web-Scraper für dynamische Seiten testen
Shuai Guan
Shuai Guan
Co-founder/CEO @ Thunderbit. Passionate about cross section of AI and Automation. He's a big advocate of automation and loves making it more accessible to everyone. Beyond tech, he channels his creativity through a passion for photography, capturing stories one picture at a time.
Topics
ScrollenScrollingSelenium
Inhaltsverzeichnis

Teste Thunderbit

Leads und weitere Daten mit nur 2 Klicks extrahieren. KI-gestützt.

Thunderbit holen Kostenlos
Daten mit KI extrahieren
Übertrage Daten einfach nach Google Sheets, Airtable oder Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week