Selenium Python 实现页面滚动的四种实用方法

白榆
白榆
发布时间:2026-10-14| 2人浏览过
原创

本文详解在 Selenium Python 中处理长页面滚动的多种方案。针对元素不可见问题,介绍通过 execute_script 调用 JS 控制滚动条位置、使用 scrollIntoView 定位元素、发送 Tab 键切换焦点以及 Robot Framework 封装方法。涵盖上下及左右滚动场景,提供完整代码示例与注意事项,帮助开发者解决自动化测试中的滚动难题。

Selenium 滚动操作的背景与必要性

Selenium 并非万能工具,部分页面操作无法直接通过 Selenium API 完成时,需借助 JavaScript 实现。

当页面内容超出单屏显示范围,尝试操作屏幕下方的元素时,直接定位会报错提示元素不可见。

此时需通过滚动条调整视图,使目标元素出现在当前屏幕可视区域内。由于滚动条本身无法直接用常规定位工具获取,需特殊处理。

Selenium 未提供直接控制滚动条的方法,但可通过 execute_script() 接口执行 JavaScript 脚本来实现。

方法一:通过 JS 脚本直接控制滚动条

方法一:直接通过 JS 脚本控制滚动条


# 滚动到顶部
  def scroll_top(self):
    if self.driver.name == "Chrome":
      js = "var q=document.body.scrollTop=0"
    else:
      js = "var q=document.documentElement.scrollTop=0"
    return self.driver.execute_script(js)

  # 滚动到底部
  def scroll_foot(self):
    if self.driver.name == "Chrome":
      js = "var q=document.body.scrollTop=1000"
    else:
      js = "var q=document.documentElement.scrollTop=1000"
    return self.driver.execute_script(js)

或者采用以下方式:

js="var q=document.getElementById('***').scrollTop=10000" driver.execute_script(js)

上述代码中的 id 为滚动条元素的标识。因 JavaScript 中不支持 xpath 定位,若网页滚动条无 id,此方法不适用。

前述示例针对垂直方向的滚动条,接下来介绍水平方向(左右)滚动条的操作方式。

#左右方向的滚动条可以使用window.scrollTo(左边距,上边距)方法 #example js="window.scrollTo(200,1000)" driver.execute_script(js)

方法二:利用 scrollIntoView 定位元素

方法二:利用 JS 脚本将滚动条拖动至指定元素位置

target = driver.find_element_by_id("***") driver.execute_script("arguments[0].scrollIntoView();", target) #拖动到可见的元素去

该方法可将滚动条自动调整至目标元素可见的位置,适用范围较广。

方法三:通过发送 Tab 键切换焦点

方法三:结合页面显示特性,通过发送 Tab 键切换焦点

例如,若操作对象为密码输入框,手工测试时可通过 Tab 键切换至该框。同理,在 Python 脚本中也可发送 Tab 键使元素获得焦点并显示。

from selenium.webdriver.common.keys import Keys driver.find_element_by_id("****").send_keys(Keys.TAB)

方法四:其他滚动相关属性与工具封装

方法四:

scrollTo 函数

--scrollHeight 获取对象的滚动高度。

--scrollLeft 设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离。

--scrollTop 设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离。

--scrollWidth 获取对象的滚动宽度


#滚动到底部
js = "window.scrollTo(0,document.body.scrollHeight)"
driver.execute_script(js)
#滚动到顶部
js = "window.scrollTo(0,0)"
driver.execute_script(js)

其他:

在 Robot Framework 框架的 Selenium2Library 中,Focus 功能可自动定位到元素。

代码块


driver.find_element_by_xpath("//div[@id='search']/div/span/input").click()
target = driver.find_element_by_id("_easyui_tree_17")
driver.execute_script("arguments[0].scrollIntoView();", target) #拖动到可见的元素去
driver.find_element_by_xpath("//span[@class='tree-title'][text()='专业测试.修改后/123456']").click()

此方法与我们在 Python 中手动编写的方法二一致,工具已对其进行封装。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。