当前位置: 首页 > news >正文

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)

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

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

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

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

http://www.lryc.cn/news/462453.html

相关文章:

  • Discuz | 起尔开发 传奇开服表游戏公益服发布论坛网站插件
  • 问:JAVA对象的数据结构长啥样?
  • STGCN解读(论文+代码)
  • perl读取目录,写入文件
  • JDK-23与JavaFX配置在IDEA中
  • VSCode运行QT界面
  • npm-run-all 使用实践
  • 【CCPC】The 2021 CCPC Guilin Onsite (XXII Open Cup, Grand Prix of EDG) K
  • selenium的实际使用
  • OpenShift 4 - 云原生备份容灾 - Velero 和 OADP 基础篇
  • javaWeb项目-Springboot+vue-校园论坛系统功能介绍
  • centors7升级GLIBC2.18
  • 基于深度学习的异常检测
  • 深入理解 SQL 中的高级数据处理特性:约束、索引和触发器
  • IC验证面试中常问知识点总结(七)附带详细回答!!!
  • 【前端】如何制作一个自己的网页(8)
  • Java之模块化详解
  • HTB:Knife[WriteUP]
  • MOE论文详解(4)-GLaM
  • LeetCode322:零钱兑换
  • 速盾:高防 cdn 提供 cc 防护?
  • 【大数据应用开发】2023年全国职业院校技能大赛赛题第10套
  • 【源码部署】解决SpringBoot无法加载yml文件配置,总是使用8080端口方案
  • 2010年国赛高教杯数学建模B题上海世博会影响力的定量评估解题全过程文档及程序
  • 使用nginx配置静态页面展示
  • [IOI2018] werewolf 狼人(Kruskal重构树 + 主席树)
  • snmpgetnext使用说明
  • frameworks 之 触摸事件窗口查找
  • memset的用法
  • 阿里云国际站DDoS高防增值服务怎么样?