selenium:操作滚动条的方法(8)

selenium支持几种操作滚动条的方法,主要介绍如下:

使用ActionChains 类模拟鼠标滚轮操作

使用函数ActionChains.send_keys发送按键Keys.PAGE_DOWN往下滑动页面,发送按键Keys.PAGE_UP往上滑动页面。

复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
driver = webdriver.Safari()
# 打开一个网页
driver.get("https://www.toutiao.com/")
driver.maximize_window()
sleep(6)
actions = webdriver.ActionChains(driver)
# 向下翻页
actions.send_keys(Keys.PAGE_DOWN).perform()
# 向上翻页
actions.send_keys(Keys.PAGE_UP).perform()

使用函数execute_script执行js脚本滚动页面

可以使用如下三种方式

1)使用window.scrollBy(x, y)

driver.execute_script('window.scrollBy(0, 1000)')

参数解释:

x:正数表示向右滑动的像素值,负数表示向左滑动的像素值

y:正数表示向下滑动的像素值,负数表示向上滑动的像素值

2)使用window.scrollTo(x, y)

driver.execute_script('window.scrollTo(0, 1000)')

参数解释:

x:正数表示向右滑动到某个像素值,负数表示向左滑动到某个像素值

y:正数表示向下滑动到某个像素值,负数表示向上滑动到某个像素值

3)使用document.documentElement.scrollTop设置滚动条高度

设置滚动高度为某个像素值:

driver.execute_script("document.documentElement.scrollTop=1000")

测试代码:使用上面3个️方式向下滚动,然后再向上滚动(中间通过sleep等待几秒方便观察效果).

复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Safari()
# 打开一个网页
#driver.get("http://www.sahitest.com/demo/framesTest.htm")
driver.get("https://www.toutiao.com/")
driver.maximize_window()
sleep(6)
#向下滚动
driver.execute_script('window.scrollBy(0, 100)')
sleep(1)
driver.execute_script('window.scrollTo(0, 200)')
sleep(1)
driver.execute_script("document.documentElement.scrollTop=300")
sleep(1)
#向上滚动
driver.execute_script('window.scrollBy(0, -100)')
sleep(1)
driver.execute_script('window.scrollTo(0, -200)')
sleep(1)
driver.execute_script("document.documentElement.scrollTop=-300")
sleep(1)

使用函数execute_script执行js脚本滚动到特定元素

我们可以直接找到需要滚动到的元素位置,并使用scrollIntoView方法滚到该位置。

示例代码:

复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Safari()
driver.get("https://www.toutiao.com/")
driver.maximize_window()
sleep(6)
# 找到某个目标元素
element = driver.find_element(By.XPATH,'//*[@id="root"]/div/div[5]/div[2]/div[6]/a[15]')
# 滚动到目标元素
driver.execute_script("arguments[0].scrollIntoView();", element)

共勉: 东汉·班固《汉书·枚乘传》:"泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。"

-----指水滴不断地滴,可以滴穿石头;

-----比喻坚持不懈,集细微的力量也能成就难能的功劳。

----感谢读者的阅读和学习,谢谢大家。

相关推荐
萧鼎34 分钟前
Python pyzmq 库详解:从入门到高性能分布式通信
开发语言·分布式·python
yujkss1 小时前
Python脚本每天爬取微博热搜-终版
开发语言·python
yzx9910131 小时前
小程序开发APP
开发语言·人工智能·python·yolo
飞翔的佩奇2 小时前
【完整源码+数据集+部署教程】二维码与查找模式检测系统源码和数据集:改进yolo11-CSwinTransformer
python·yolo·计算机视觉·数据集·yolo11·二维码与查找模式检测
大霞上仙2 小时前
实现自学习系统,输入excel文件,能学习后进行相应回答
python·学习·excel
Caven772 小时前
【pytorch】reshape的使用
pytorch·python
无规则ai2 小时前
动手学深度学习(pytorch版):第四章节—多层感知机(5)权重衰减
人工智能·pytorch·python·深度学习
你知道网上冲浪吗3 小时前
【原创理论】Stochastic Coupled Dyadic System (SCDS):一个用于两性关系动力学建模的随机耦合系统框架
python·算法·数学建模·数值分析
钢铁男儿3 小时前
Python 正则表达式核心元字符全解析
python
杨荧4 小时前
基于Python的宠物服务管理系统 Python+Django+Vue.js
大数据·前端·vue.js·爬虫·python·信息可视化