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

使用Python+Selenium遇JavascriptException:arguments[0].scrollTo不是函数

问题排查与解决方案

错误原因

报错arguments[0].scrollTo is not a function的核心问题是:你传入的scrollable_element不支持scrollTo方法。scrollTo是Window对象或文档根滚动元素的专属方法,普通DOM元素(即使是可滚动容器)并不自带这个方法,你混淆了全局滚动和元素内滚动的API。

修复方案

方案1:使用scrollTop属性(兼容性最优)

普通可滚动元素(比如设置了overflow: scroll/auto的div)通过修改scrollTop属性来控制滚动位置,替换执行脚本即可:

def scroll_slow(self, scrollable_element, start=0, end=3600, step=100, reverse=False):
        if reverse:
            start, end = end, start
            step = -step

        for i in range(start, end, step):
            # 改用scrollTop属性设置元素内滚动位置
            self.browser.execute_script("arguments[0].scrollTop = {};".format(i), scrollable_element)
            time.sleep(random.uniform(1.0, 2.6))

方案2:使用现代元素scroll方法(更灵活)

如果目标浏览器支持ES6+,可以用element.scroll()方法,支持更多参数(比如平滑滚动,不过你已添加sleep,可按需选择):

def scroll_slow(self, scrollable_element, start=0, end=3600, step=100, reverse=False):
        if reverse:
            start, end = end, start
            step = -step

        for i in range(start, end, step):
            self.browser.execute_script("arguments[0].scroll({top: {}});".format(i), scrollable_element)
            time.sleep(random.uniform(1.0, 2.6))

额外排查点

  • 确认scrollable_element确实是页面上的可滚动容器:打开开发者工具,检查该元素是否设置了overflow: scroll或overflow: auto,且内容高度超过元素本身高度。
  • 确保元素未过期:如果页面中途刷新或DOM重新渲染,之前获取的scrollable_element会失效,需要重新定位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 21:35:17