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

selenium动态判断滚轮方向样例

一、说明及实现方案:

要根据目标元素的位置动态决定是向下滑动还是向上滑动,可以结合 window.pageYOffset 和目标元素的位置来实现逻辑判断。以下是实现代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

# 打开浏览器并访问页面
driver = webdriver.Chrome()
driver.get('https://example.com')

# 等待页面加载完成
time.sleep(2)

try:
    # 找到目标元素
    target_element = driver.find_element(By.XPATH, '//*[@class="item-info" and text()="100"]')

    # 获取当前页面的垂直滚动位置
    current_scroll_position = driver.execute_script("return window.pageYOffset;")

    # 获取目标元素的垂直位置
    target_element_position = driver.execute_script("return arguments[0].getBoundingClientRect().top + window.pageYOffset;", target_element)

    # 根据目标元素的位置判断滑动方向
    if target_element_position > current_scroll_position:
        print("目标元素在下方,向下滑动")
    elif target_element_position < current_scroll_position:
        print("目标元素在上方,向上滑动")

    # 滚动到目标元素
    driver.execute_script("arguments[0].scrollIntoView({behavior: 'smooth', block: 'center'});", target_element)

    print("目标元素已定位并滚动至视图中央")

except Exception as e:
    print(f"发生错误: {e}")

finally:
    # 关闭浏览器
    time.sleep(2)
    driver.quit()

二、实现细节:

  1. 动态滚动判断

    • window.pageYOffset:获取当前页面的垂直滚动位置。
    • getBoundingClientRect().top + window.pageYOffset:获取目标元素相对于页面顶部的绝对位置。
  2. 滑动方向

    • 如果 target_element_position > current_scroll_position,目标元素在下方,向下滑动。
    • 如果 target_element_position < current_scroll_position,目标元素在上方,向上滑动。
  3. 滚动操作

    • 使用 scrollIntoView 方法,让目标元素滚动到可视范围内。

http://www.kler.cn/a/420235.html

相关文章:

  • 2024年12月3日Github流行趋势
  • 大数据新视界 -- 大数据大厂之 Hive 数据压缩算法对比与选择(下)(20 / 30)
  • 如何在 Firefox 中清除特定网站的浏览历史记录
  • Navicat连接SQL Server及SpringBoot连接SQL Server(jtds)
  • 威联通-001 手机相册备份
  • 第六届金盾信安杯Web题解
  • 【深度学习|特征增强模块】AttentionEnhancementModule模块和普通 QKV Attention模块的在深度学习网络中的作用-2
  • 自动化是语法,智能化是语义与语用
  • 使用Python和OpenAI Whisper为视频生成字幕
  • Vue文字转语音实现
  • 二阶信息在机器学习中的优化;GPTQ算法利用近似二阶信息;为什么要求近似二阶(运算量大,ReLu0点不可微)
  • 【智商检测——DP】
  • 一些基于宏基因组的巨型病毒研究
  • Python parsel库学习总结
  • 使用 OpenCV 进行车辆跟踪
  • 深入理解CSS语法:掌握Web开发的基石
  • docker x86环境构建arm镜像出现failed to fetch oauth token问题
  • 爬虫专栏第二篇:Requests 库实战:从基础 GET 到 POST 登录全攻略
  • 【maven-6】Maven 生命周期相关命令演示
  • XELA - uSkin 三轴触觉传感器:为机器人赋予敏锐触感
  • 永磁同步电机负载估计算法--滑模扰动观测器
  • 【合作原创】使用Termux搭建可以使用的生产力环境(一)
  • golang用errgroup的一个小小坑
  • UIlicious - 自动化端到端测试
  • Oracle 建表的存储过程
  • YOLOv11改进,YOLOv11添加SAConv可切换空洞卷积,二次创新C3k2结构