Ниже сработало для меня.
#first move to the element
self.driver.execute_script("return arguments[0].scrollIntoView(true);", element)
#then scroll by x, y values, in this case 10 pixels up
self.driver.execute_script("window.scrollBy(0, -10);")
Когда вы говорите, прокрутите (0,200).Положительное число означает прокрутку вниз.Если вы хотите прокрутить вверх, используйте отрицательный -200
. См. Также документацию здесь: https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollBy
Если вы используете браузер, который не поддерживает scrollToOptions, тогда переключитесь на более совершенныйподдерживаемый браузер.
Другим возможным решением является реализация webDriverWait для определенного элемента, который будет отображаться в HTML DOM
element = WebDriverWait(self.driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "element_css")))
self.driver.execute_script("return arguments[0].scrollIntoView(true);", element)
Также вы можете попробовать использовать ActionChains
element = driver.find_element_by_id("id") # the element you want to scroll to
ActionChains(driver).move_to_element(element).perform()
ПослеВы переходите к элементу, затем можете использовать код прокрутки
Вы также можете попробовать добавить смещение.Некоторые веб-страницы не будут загружать новый контент, если вы прокрутите до самого конца.Некоторые веб-страницы загружают новый контент только по достижении конца страницы.
document.documentElement.scrollHeight-10
Менее обычным способом было бы выполнить JavaScript в вашем коде.Также попробуйте максимизировать ваше окно с селеном.Иногда размер окна влияет на работу Selenium
driver.maximize_window()
findThis = driver.find_element_by_css_selector("CSS SELECTOR HERE")
jsScript = """
function move_up(element) {
element.scrollTop = element.scrollTop - 1000;
}
function move_down(element) {
console.log('Position before: ' + element.scrollTop);
element.scrollTop = element.scrollTop + 1000;
console.log('Position after: ' + element.scrollTop);
}
move_up(arguments[0]);
"""
driver.execute_script(jsScript, findThis)