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

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

本文详解在 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 相关产品和应用

全部下载

专题列表