You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Selenium WebDriver及Javascript Executor无法滚动网页求助

解决Selenium无法滚动iremedy页面的问题

你的代码无法滚动页面,大概率是因为body元素未获得焦点,或者页面的实际滚动区域并非全局body。以下是几种可行的解决方案:

方法1:直接用JavaScript执行全局滚动

这种方法无需依赖元素聚焦,直接操作浏览器窗口滚动,兼容性最好:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

driver = webdriver.Chrome('chromedriver.exe')
driver.get('https://iremedy.com/search?query=Vital%20Signs%20Monitors')

# 用显式等待替代time.sleep,确保页面加载完成
WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CLASS_NAME, 'product-item'))
)

# 滚动到页面底部
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

方法2:滚动特定容器(如果页面用嵌套容器承载滚动内容)

部分页面的商品列表会放在固定高度的独立容器中,此时需要滚动该容器而非全局窗口:

# 找到页面的滚动容器(需根据实际页面结构调整选择器,示例为商品列表容器)
scroll_container = driver.find_element(By.CSS_SELECTOR, '.search-results-container')
# 滚动容器到底部
driver.execute_script("arguments[0].scrollTop = arguments[0].scrollHeight;", scroll_container)

方法3:修正原代码的元素聚焦问题

如果坚持使用Keys.END,需要先让body元素获得焦点再发送按键:

from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains

body = driver.find_element(By.TAG_NAME, 'body')
# 点击body获取焦点
body.click()
# 模拟按下END键
ActionChains(driver).send_keys(Keys.END).perform()

注意事项

  • 尽量避免使用time.sleep(),显式等待(WebDriverWait)能更精准地等待页面元素加载完成,避免因网络延迟导致的滚动失效。
  • 如果滚动后需要加载更多内容,可以循环执行滚动+等待,直到页面高度不再变化。

内容的提问来源于stack exchange,提问作者Muhammad Talha Zeb Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 20:35:16