Obecnie używam webdrivera selenu do analizowania strony znajomych na Facebooku i wyodrębniania wszystkich identyfikatorów ze skryptu AJAX. Ale muszę przewinąć w dół, aby znaleźć wszystkich przyjaciół. Jak mogę przewinąć w dół w Selenium. Używam Pythona.
python
selenium
selenium-webdriver
automated-tests
user2523364
źródło
źródło
Odpowiedzi:
Możesz użyć
gdzie Y to wysokość (na monitorze FullHD jest to 1080). (Dzięki @lukeis)
Możesz także użyć
aby przewinąć do dołu strony.
Jeśli chcesz przewinąć do strony z nieskończonym ładowaniem , takiej jak strony społecznościowe, facebook itp. (Dzięki @Cuong Tran)
inną metodą (dzięki Juanse) jest wybranie obiektu i
źródło
scrollHeight
, co to oznacza i jak ogólnie działa?Jeśli chcesz przewinąć w dół nieskończoną stronę (np. Linkedin.com ), możesz użyć tego kodu:
Źródła: https://stackoverflow.com/a/28928684/1316860
źródło
SCROLL_PAUSE_TIME
Różnie, trwa około 2 sekundy dla mnie.Możesz użyć
send_keys
do symulacji naciśnięcia klawiszaEND
(lubPAGE_DOWN
) (co normalnie przewija stronę):źródło
ta sama metoda, jak pokazano tutaj :
w Pythonie możesz po prostu użyć
(Y to pozycja w pionie, do której chcesz przewinąć)
źródło
pomogło to, gdy próbowałem uzyskać dostęp do „li”, które nie było widoczne.
źródło
location_once_scrolled_into_view
powinno się wywoływać bez,()
jest to, żelocation_once_scrolled_into_view
jest to Pythonproperty
. zobacz kod źródłowy tutaj: selenium / webelement.py pod adresem d3b6ad006bd7dbee59f8539d81cee4f06bd81d64 · SeleniumHQ / seleniumW moim celu chciałem bardziej przewijać w dół, pamiętając o położeniu okien. Moje rozwiązanie było podobne i używane
window.scrollY
który przejdzie do aktualnej pozycji przewijania y + 200
źródło
Oto jak przewijasz stronę w dół:
źródło
Najłatwiejszym sposobem rozwiązania tego problemu było wybranie etykiety, a następnie wysłanie:
Mam nadzieję, że to działa!
źródło
Żadna z tych odpowiedzi nie działała dla mnie, przynajmniej nie do przewijania strony wyników wyszukiwania na Facebooku, ale po wielu testach znalazłem to rozwiązanie:
źródło
SCROLL_PAUSE_TIME
w stackoverflow.com/a/27760083/7326714 się2
, że działa dobrze i przewijania w dół 100x szybsze.Podczas pracy z YouTube elementy pływające podają wartość „0” jako wysokość przewijania, więc zamiast używać „return document.body.scrollHeight” spróbuj użyć tego jednego „return document.documentElement.scrollHeight” dostosuj czas wstrzymania przewijania zgodnie z Twoim Internetem W przeciwnym razie będzie działać tylko jeden raz, a następnie zepsuje się.
źródło
Szukałem sposobu na przewijanie dynamicznej strony internetowej i automatyczne zatrzymywanie po osiągnięciu końca strony i znalezieniu tego wątku.
Post od @Cuong Tran , z jedną główną modyfikacją, był odpowiedzią, której szukałem. Pomyślałem, że inni mogą uznać modyfikację za pomocną (ma ona wyraźny wpływ na działanie kodu), stąd ten post.
Modyfikacja polega na przeniesieniu instrukcji przechwytującej wysokość ostatniej strony wewnątrz pętli (tak, aby każde sprawdzenie było porównywane z wysokością poprzedniej strony).
Tak więc poniższy kod:
(Jest jeszcze jedna modyfikacja, w której instrukcja break znajduje się w innym warunku (w przypadku, gdy strona się zacina), który można usunąć).
źródło
Ten kod przewija się do dołu, ale nie wymaga za każdym razem czekania. Będzie się stale przewijać, a następnie zatrzymywać na dole (lub po przekroczeniu limitu czasu)
Jest to znacznie szybsze niż oczekiwanie 0,5-3 sekund za każdym razem na odpowiedź, kiedy ta odpowiedź może zająć 0,1 sekundy
źródło
Przewiń ładowanie stron. Przykład: medium, quora itp
źródło
jeśli chcesz przewijać w określonym widoku / ramce (WebElement), jedyne, co musisz zrobić, to zastąpić „body” określonym elementem, który chcesz przewijać. otrzymuję ten element poprzez „getElementById” w poniższym przykładzie:
tak jest na przykład w YouTube ...
źródło
Ta
ScrollTo()
funkcja już nie działa. To jest to, czego użyłem i działało dobrze.źródło
to działa w moim przypadku.
źródło