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)

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/892858.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数学考研高分突破:解题思维与速度的双重修炼

随着考研季的临近,众多考生为了在数学这一科目中取得高分,纷纷投入到紧张的复习中,如何在有限的时间内,既提高解题思维,又提升解题速度,成为了许多考生心中的难题,本文将围绕这一主题&#xff0…

绘制YOLOv11模型在训练过程中,精准率,召回率,mAP_0.5,mAP_0.5:0.95,以及各种损失的变化曲线

一、本文介绍 本文用于绘制模型在训练过程中,精准率,召回率,mAP_0.5,mAP_0.5:0.95,以及各种损失的变化曲线。用以比较不同算法的收敛速度,最终精度等,并且能够在论文中直观的展示改进效果。支持多文件的数据比较。 专栏目录:YOLOv11改进目录一览 | 涉及卷积层、轻量化…

SpringMVC后台控制端校验-表单验证深度分析与实战优化

前言 在实战开发中,数据校验也是十分重要的环节之一,数据校验大体分为三部分: 前端校验后端校验数据库校验 本文讲解如何在后端控制端进行表单校验的工作 案例实现 在进行项目开发的时候,前端(jquery-validate),后端,数据库都要进行相关的数据…

【华为】静态路由配置

1.配置接入层: LSW1(LSW3同理): vlan batch 10 20 in g0/0/1 port link-type ac port default vlan 10 in g0/0/2 port link-type ac port default vlan 20 in g0/0/24 port link-type tr port tr allow-pass vlan 10 202.配置汇聚层&#xf…

v853扬声器调试

文章目录 1、前言2、环境介绍3、修改设备树4、使用tinymix测试扬声器 1、前言 本文记录v853下的扬声器调试。 2、环境介绍 硬件:韦东山v853 aicit板卡 软件:v853 tina sdk 3、修改设备树 扬声器使用的是v853内置的audio codec,原理图如…

进程的属性

一、进程状态 CPU执行进程代码不是把进程代码执行完毕,才开始执行下一个,而是给每一个进程预分配一个时间片,基于时间片,进行调度轮转。 并行和并发 并行: 多个进程在多个CPU下分别,同时进行运行,这称之…

设计小白必看!一文教你区分原型图和UI图

产品设计过程中,产品经理或UI设计师常常需要在不同的设计阶段产出不同的原型图和UI图。初入职场的产品小白或UI小白很容易将原型图和UI图混淆,不能完全区分它们各自的作用,从而影响了设计流程的效率和效果。本文将详细解析原型图与UI图的定义…

【DS】哈希表,哈希桶的实现

目录 哈希概念哈希冲突哈希函数负载因子哈希冲突的解决闭散列开散列 哈希表闭散列的实现哈希表的结构哈希函数构造函数查找插入删除 哈希表开散列的实现哈希表的结构查找插入删除 哈希表的表长建议是素数 平衡二叉树的学习中,学习及模拟实现了AVL树和红黑树&#xf…

uni-app写的微信小程序如何体积太大如何处理

方法一:对主包进行分包处理,将使用url: /pages/components/equipment/equipment跳转页面的全部拆分为分包,如url: /pagesS/components/equipment/equipment 在pages.json中添加 "subPackages": [{ "root"…

STM32项目实战:基于STM32F4的智能灯光控制系统(LVGL),附项目教程/源码

《智能灯光控制系统_STM32F4》项目完整文档、项目源码,点击下方链接免费领取。 项目资料领取https://s.c1ns.cn/jjQK7 STM32项目实战之“智能灯光控制系统”(基于STM32F4) 今天小编来分享一个《智能灯光控制系统》的项目案例,硬件…

如何批量下载采集淘宝图片?3个方法可以帮助你

如何批量下载采集淘宝图片?在现代电子商务的背景下,淘宝作为中国最大的在线购物平台之一,承载了数以亿计的商品和信息。对于从事电商运营、市场推广或网络营销的人员而言,采集淘宝图片已经成为日常工作中的重要任务。这不仅是为了…

Jenkins pipeline语法笔记

Jenkins pipeline 简介Jenkins Pipeline 优势DSL 是什么 pipeline支持两种语法:声明式pipeline语法:Pipelineagent Pipeline 声明式语法DeclarativeenvironmentoptionsparameterstriggerstoolsinputwhenParallel Pipeline Scripted语法创建一个简单的 Pi…

(38)MATLAB分析带噪信号的频谱

文章目录 前言一、MATLAB仿真代码二、仿真结果画图总结 前言 本文给出带噪信号的时域和频域分析,指出频域分析在处理带噪信号时的优势。 首先使用MATLAB生成一段信号,并在信号上叠加高斯白噪声得到带噪信号,然后对带噪信号对其进行FFT变换&…

数据结构:跳表

数据结构:跳表 跳表实现类架构构造函数析构函数查找插入删除 总代码 跳表 在传统的链表中,不论单链表还是双链表,查询时都要O(N)的时间复杂度,就算是一个有序链表,由于无法像数组一样定址,无法进行二分查找…

学习最新vue20.17.0-事件处理

vue中文官网事件处理 | Vue.js (vuejs.org) 我在官网基础上,添加些代码,方便初学者学习,能够快速理解官网内容,掌握自己所需要的知识,以便节省宝贵的时间。 事件处理 监听事件 我们可以使用 v-on 指令 (简写为 @) 来监听 DOM 事件,并在事件触发时执行对应的 JavaScript…

Anaconda3与PyCharm安装配置

参考文章 Anaconda3与PyCharm安装配置保姆教程 参照上面文章,安装好Anaconda3和PyCharm环境 下面重点记录下环境配置 1,在window系统菜单中选择Anaconda Prompt,而不是Anaconda Powershell Prompt 2, 打开Anaconda Prompt,输…

[网络基础]——什么是IP路由,路由优先级,度量值详解

🏡作者主页:点击! 🤖网络通信基础TCP/IP专栏:点击! ⏰️创作时间:2024年10月14日15点23分 路由器扮演着至关重要的角色,它不仅负责将数据包从源地址转发到目的地址,还…

wsl1升级到wsl2步骤

1、进入到windows功能界面(winr:输入cmd,到界面里面输出control) 这几个选项勾选上,然后自动重启电脑 2、下载WSL2内核安装包 前往此链接,然后点击下图的下载链接,下载这个更新包后用管理员权…

美畅物联丨剖析 GB/T 28181 与 GB 35114:视频汇聚领域的关键协议

我们在使用畅联云平台进行视频汇聚时,经常会用的GB/T 28181协议,前面我们写了关于GB/T 28181的相关介绍,​ 详见《畅联云平台|关于GB28181你了解多少?》。 ​最近也有朋友向我们咨询GB 35114协议与GB/T 28181有什么不同…

详细分析Redisson分布式锁中的renewExpiration()方法

目录 一、Redisson分布式锁的续期 整体分析 具体步骤和逻辑分析 为什么需要递归调用? 定时任务的生命周期? 一、Redisson分布式锁的续期 Redisson是一个基于Redis的Java分布式锁实现。它允许多个进程或线程之间安全地共享资源。为了实现这一点&…