С тех пор, как я начал автоматизировать браузеры для просмотра веб-страниц, прокрутка страницы стала для меня проблемой. Я искал в Интернете и нашел много решений. Одним из таких решений было

browser.execute_script("window.scrollTo(x, y)")

где «х» — положение по оси х, а «у» — положение по оси у.

Но откуда мне знать эти координаты?

1-й подход

Чтобы решить проблему, я нашел другой ответ

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

где «x» = 0, а «y» = полная высота документа.

2-й подход

Я решил установить некоторый диапазон для размера страницы и запустить код прокрутки внутри цикла, т.е.

for i in range(0, 7000, 200):
    browser.execute_script(f"window.scrollTo(x, {i})")

Здесь я определил диапазон размера страницы, то есть от 0 до 7000 пикселей. Когда я запускал код, он итерировался по длине 200, чтобы достичь длины 7000–1px.

Проблема: я вручную определил размер страницы. Как узнать точный размер страницы?

3-й подход

browser.execute_script(f"window.scrollTo(x, document.body.offsetHeight)")

4-й подход

while True:
    browser.execute_script("window.scrollTo(0, document.body.scrollHeight)")

Окончательный подход (Успех)

Решение, которое я нашел, было:

time.sleep(5)
while True:
    height1 = driver.execute_script('return window.pageYOffset')
    time.sleep(2)
    scroll = driver.execute_script('window.scrollTo(0, document.body.scrollHeight)')
    height2 = driver.execute_script('return window.pageYOffset')
    if height1 == height2:
        break
    else:
        continue

Позвольте мне объяснить каждую строку.

1- немного отдохнуть

2- запустить бесконечный цикл while

3- найти текущую высоту полосы прокрутки (не прокручивать вниз)

4- отдых 2 секунды

5/6- прокрутить вниз

7- найти эту новую высоту полосы прокрутки

8- проверьте, равна ли новая высота полосы прокрутки старой высоте.

(было бы иначе, если бы страница загружалась снова)

9- если высоты равны, разорвать петлю.

10- еще

11- продолжить петлю

Счастливая автоматизация