使用Python Selenium将指定DIV元素滚动到底部的问题咨询
问题根因
你之前使用的scrollIntoView方法作用是将指定元素滚动到整个页面的可视区域,而非滚动该元素内部的内容。你需要操作的.content-scrolling-behavior本身是可滚动的容器,要滚动它的内部内容到最底部,需要修改该元素的scrollTop属性。
可行代码实现
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import time driver = webdriver.Chrome('chromedriver') driver.maximize_window() driver.implicitly_wait(30) driver.get('https://www.fidelity.com.hk/en/our-funds/mpf') wait = WebDriverWait(driver, 20) # 等待弹窗加载完成后点击进入合规声明页 wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div[data-action="button68"]'))).click() # 等待滚动容器元素加载完成,替换掉稳定性差的硬等待 scroll_ele = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.content-scrolling-behavior'))) # 执行JS将容器滚动到底部,直接设置scrollTop等于内容总高度 driver.execute_script("arguments[0].scrollTop = arguments[0].scrollHeight", scroll_ele) # 可选:增加滚动校验逻辑,适配内容异步加载场景,确保完全滚动到底部 while True: before_scroll = driver.execute_script("return arguments[0].scrollTop", scroll_ele) driver.execute_script("arguments[0].scrollTop = arguments[0].scrollHeight", scroll_ele) time.sleep(0.2) after_scroll = driver.execute_script("return arguments[0].scrollTop", scroll_ele) if before_scroll == after_scroll: break # 滚动完成后即可操作后续的同意按钮等步骤
方案说明
- 直接通过JS操作DOM元素的原生滚动属性,兼容性最好,不受页面布局影响
- 替换硬等待为显式等待元素加载,执行稳定性更高
- 可选的滚动校验逻辑可以避免部分场景下内容异步加载导致的滚动不完整问题
内容的提问来源于stack exchange,提问作者teri ciu
相关产品推荐
相关产品推荐

