Ich verwende derzeit Selenium Webdriver, um die Facebook-Seite mit Freunden von Freunden zu analysieren und alle IDs aus dem AJAX-Skript zu extrahieren. Aber ich muss nach unten scrollen, um alle Freunde zu bekommen. Wie kann ich in Selen nach unten scrollen? Ich benutze Python.
python
selenium
selenium-webdriver
automated-tests
user2523364
quelle
quelle
Antworten:
Sie können verwenden
Dabei ist Y die Höhe (auf einem Full-HD-Monitor sind es 1080). (Danke an @lukeis)
Sie können auch verwenden
um zum Ende der Seite zu scrollen .
Wenn Sie zu einer Seite mit unendlichem Laden scrollen möchten , z. B. zu sozialen Netzwerken, Facebook usw. (danke an @Cuong Tran)
Eine andere Methode (dank Juanse) ist, ein Objekt auszuwählen und
quelle
scrollHeight
, was es bedeutet und wie es im Allgemeinen funktioniert?Wenn Sie zum Ende der unendlichen Seite scrollen möchten (wie linkedin.com ), können Sie diesen Code verwenden:
Referenz: https://stackoverflow.com/a/28928684/1316860
quelle
SCROLL_PAUSE_TIME
variiert, es dauert ungefähr 2 Sekunden für mich.Sie können
send_keys
einenEND
(oderPAGE_DOWN
) Tastendruck simulieren (der normalerweise die Seite scrollt):quelle
gleiche Methode wie hier gezeigt :
In Python können Sie einfach verwenden
(Y ist die vertikale Position, zu der Sie scrollen möchten)
quelle
Dies half, als ich versuchte, auf ein 'li' zuzugreifen, das nicht sichtbar war.
quelle
location_once_scrolled_into_view
ohne aufgerufen werden sollte,()
ist, dasslocation_once_scrolled_into_view
es sich um einen Python handeltproperty
. Den Quellcode finden Sie hier: selenium / webelement.py unter d3b6ad006bd7dbee59f8539d81cee4f06bd81d64 · SeleniumHQ /Zu meinem Zweck wollte ich mehr nach unten scrollen und dabei die Position der Fenster berücksichtigen. Meine Lösung war ähnlich und verwendet
window.scrollY
Dies wird zur aktuellen y-Bildlaufposition + 200 gehen
quelle
So scrollen Sie auf der Webseite nach unten:
quelle
Der einfachste Weg, dieses Problem zu lösen, bestand darin, ein Etikett auszuwählen und dann zu senden:
Hoffe, es funktioniert!
quelle
Keine dieser Antworten hat bei mir funktioniert, zumindest nicht beim Scrollen einer Facebook-Suchergebnisseite, aber ich habe nach vielen Tests dieser Lösung Folgendes gefunden:
quelle
SCROLL_PAUSE_TIME
in stackoverflow.com/a/27760083/7326714 auf setzen2
, es gut funktioniert und Sie 100x schneller nach unten scrollen.Wenn Sie mit YouTube arbeiten, geben die schwebenden Elemente den Wert "0" als Bildlaufhöhe an. Verwenden Sie also "return document.body.scrollHeight" , anstatt "return document.documentElement.scrollHeight" zu verwenden. Passen Sie die Bildlaufpausenzeit gemäß Ihrem Internet an Geschwindigkeit sonst läuft es nur einmal und bricht danach ab.
quelle
Ich suchte nach einer Möglichkeit, durch eine dynamische Webseite zu scrollen und automatisch anzuhalten, sobald das Ende der Seite erreicht ist, und fand diesen Thread.
Der Beitrag von @Cuong Tran mit einer Hauptänderung war die Antwort, nach der ich gesucht habe. Ich dachte, dass andere die Änderung hilfreich finden könnten (sie hat einen ausgeprägten Einfluss auf die Funktionsweise des Codes), daher dieser Beitrag.
Die Änderung besteht darin, die Anweisung zu verschieben, die die letzte Seitenhöhe innerhalb der Schleife erfasst (sodass jede Prüfung mit der vorherigen Seitenhöhe verglichen wird).
Also, der Code unten:
(Es gibt eine weitere Änderung, bei der sich die break-Anweisung in einer anderen Bedingung befindet (falls die Seite "klebt"), die entfernt werden kann.)
quelle
Dieser Code scrollt nach unten, erfordert jedoch nicht, dass Sie jedes Mal warten. Es wird kontinuierlich gescrollt und dann unten angehalten (oder Timeout)
Dies ist viel schneller als jedes Mal 0,5 bis 3 Sekunden auf eine Antwort zu warten, wenn diese Antwort 0,1 Sekunden dauern kann
quelle
Bildlaufseiten scrollen. Beispiel: Medium, Quora usw.
quelle
Wenn Sie innerhalb einer bestimmten Ansicht / eines bestimmten Rahmens (WebElement) scrollen möchten, müssen Sie nur "body" durch ein bestimmtes Element ersetzen, in dem Sie scrollen möchten . Ich erhalte dieses Element über "getElementById" im folgenden Beispiel:
Dies ist zum Beispiel bei YouTube der Fall ...
quelle
Die
ScrollTo()
Funktion funktioniert nicht mehr. Das habe ich benutzt und es hat gut funktioniert.quelle
es funktioniert für meinen Fall.
quelle