driver.execute_script ("window.scrollBy (0, document.body.scrollHeight)") не прокручивается до конца страницы - PullRequest
0 голосов
/ 10 июля 2020
from selenium import webdriver

driver = webdriver.Chrome(executable_path="chromedriver.exe")
driver.get("https://www.ungm.org/Public/Notice")
driver.maximize_window() #maximize the window size
driver.execute_script("window.scrollBy(0,document.body.scrollHeight)")

https://www.ungm.org/Public/Notice эта страница обновляет свои данные таблицы, используя javascript. Я хочу отказаться от него, но сначала мне нужно загрузить всю таблицу, которая загружается динамически. хотя указанная выше программа прокручивается вниз, но не до конца страницы.

введите описание изображения здесь

Я хочу, чтобы отображались все 771 элемент, но он прокручивается вниз настолько, насколько я вижу только 30 элементов.

1 Ответ

0 голосов
/ 10 июля 2020

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

def scroll(driver, timeout):
    scroll_pause_time = timeout

    # Get scroll height
    last_height = driver.execute_script("return document.body.scrollHeight")

    while True:
        # Scroll down to bottom
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

        # Wait to load page
        time.sleep(scroll_pause_time)

        # Calculate new scroll height and compare with last scroll height
        new_height = driver.execute_script("return document.body.scrollHeight")
        if new_height == last_height:
            # If heights are the same it will exit the function
            break
        last_height = new_height

Использование scroll(driver, 2) приведет к прокрутке, подождите 2 секунды затем проверьте, изменилась ли высота прокрутки (новое содержимое). Если нет, то, вероятно, она достигла конца, что приведет к разрыву l oop.

Примечание: Adjust аргумент тайм-аута (в секундах) в зависимости от того, сколько в среднем времени требуется для загрузки содержимого.

...