2016-12-08 14 views
0

Что касается вопроса this, я хочу знать, есть ли способ дождаться завершения автоматического прокрутки страницы?Как дождаться завершения автоматического прокрутки страницы

Проблема заключается в том, что при нажатии на кнопку «Далее» ("Volgende") Кнопка на пагинации (URL является https://www.iens.nl/restaurant+utrecht) впервые webdriver перенаправляет вас на следующую страницу и автоматически прокручивать до верхней части страницы. Так что, если выполнить

WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.LINK_TEXT, 'Volgende'))) снова, только после того, как перенаправлении webdriver будет кнопку найти, но нажать на какой-либо другой элемент, как фокус перемещается вверх примерно на одну секунду.

Пока только решение сохранить нажав кнопку «Далее», пока последняя страница достигла не использовать time.sleep:

while True: 
    try: 
     click_icon = WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.LINK_TEXT, 'Volgende'))) 
     click_icon.click() 
     time.sleep(2) # to wait until page scrolled 
    except: 
     break 

, но это, очевидно, не самая лучшая идея ...

P.S. Также интересно, есть ли возможность отключить функцию автоматического прокрутки страницы. Переключение general.autoScroll в False в Firefoxabout:config не делает какого-либо эффекта

ответ

1

HTML, содержит элемент с тегом <main>, который получает атрибут style, когда страница не прокручивается весь путь. Я предлагаю вам подождать, пока тег не не имеют этот атрибут

WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.CSS_SELECTOR, 'main:not([style*="margin-top"])'))) 
+0

Круто! Это работает. Благодаря! – Andersson