Селен прокрутить медленно - PullRequest
0 голосов
/ 07 мая 2019

Я пытаюсь выполнить динамическую очистку веб-страницы на языке javascript с использованием Python.

1) Однако элементы загружаются только когда я медленно прокручиваю страницу вниз.

Я попытался:

driver.execute_script("window.scrollTo(0, Y)") 

(это не работает, потому что это толькопрокручивается до определенной точки на странице, пропуская другие результаты)

и

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

(это не работает, поскольку элементы не загружаются при прокрутке вниз до концастраница - требуется, чтобы пользователь медленно прокручивал всю страницу)

2) Как заставить Selenium ждать загрузки всех моих элементов, прежде чем вернуть их мне?

Я понимаючто это решение существует:

myElem = WebDriverWait(browser, delay).until(EC.presence_of_element_located((By.ID, 'IdOfMyElement')))

Но как бы это работало, если бы результаты непрерывно появлялись, когда пользователь прокручивал страницу вниз?Разве этот код не остановит Selenium, когда он обнаружит первое вхождение указанного элемента?

1 Ответ

0 голосов
/ 07 мая 2019

Вы можете написать функцию, которая посылает клавишу со стрелкой вниз, пока вы не сможете найти элемент.Предпочтительно в цикле, выполняемом с помощью какого-то FluentWait (это Java-класс), но я видел, что это также делается в Python: свободное ожидание Python Целью было бы продолжать посылать клавишу со стрелкой внизустановить количество времени, игнорируя NoSuchElementException

...