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

如何让Selenium仅在左侧区域执行滚动操作

解决Selenium仅滚动左侧区域的问题

问题核心是window.scrollBy(0, 200)操作的是整个浏览器窗口,而非目标左侧滚动容器,所以会影响地图区域。要实现仅滚动左侧栏,需定位到左侧的可滚动容器元素,再对该元素执行内部滚动。

  • 第一步:定位左侧滚动容器
    用浏览器开发者工具(F12)定位左侧栏的滚动容器,找到带有overflow: auto或overflow: scroll样式的元素,复制其CSS选择器或XPath。比如假设容器的class为left-enterprise-list-container,则定位代码:

    from selenium.webdriver.common.by import By
    
    left_scroll_container = driver.find_element(By.CSS_SELECTOR, ".left-enterprise-list-container")
    
  • 第二步:对容器执行内部滚动
    通过execute_script直接操作该元素的滚动属性,两种常用方式:

    1. 修改scrollTop属性(每次滚动200px):
      driver.execute_script("arguments[0].scrollTop += 200;", left_scroll_container)
      
    2. 调用元素的scrollBy方法:
      driver.execute_script("arguments[0].scrollBy(0, 200);", left_scroll_container)
      
  • 进阶:循环滚动加载所有企业链接
    如果需要滚动到底部加载全部内容,可以循环执行滚动,直到容器的scrollHeight等于scrollTop + clientHeight(即已滚动到底部):

    import time
    
    while True:
        # 记录当前滚动高度
        current_scroll_top = driver.execute_script("return arguments[0].scrollTop;", left_scroll_container)
        # 执行滚动
        driver.execute_script("arguments[0].scrollTop += 500;", left_scroll_container)
        # 等待内容加载(可根据页面调整等待时间)
        time.sleep(1)
        # 检查是否已滚动到底部
        new_scroll_top = driver.execute_script("return arguments[0].scrollTop;", left_scroll_container)
        if new_scroll_top == current_scroll_top:
            break
    

内容的提问来源于stack exchange,提问作者Felipe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 06:25:19