首页 > 其他分享 >使用Selenium模拟鼠标滚动操作的技巧

使用Selenium模拟鼠标滚动操作的技巧

时间:2024-03-25 18:44:32浏览次数:29  
标签:滚动 鼠标 ActionChains Selenium driver 模拟

在这里插入图片描述

前言

在进行Web自动化测试或数据抓取时,模拟用户操作是至关重要的。其中之一就是模拟鼠标滚动操作,这在许多情况下都是必需的。使用Selenium,一种流行的Web自动化测试工具,可以轻松实现这一功能。

模拟鼠标滚动的重要性

网页内容可能会因为需要用户滚动才能加载而延迟显示,或者是在滚动时动态加载内容。在这种情况下,如果没有模拟鼠标滚动操作,我们可能会错过某些重要信息或无法执行后续操作。

使用Selenium模拟鼠标滚动的方法

Selenium提供了ActionChains类来模拟用户的行为,其中包括鼠标滚动。下面是一种模拟鼠标滚动的方法:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

# 初始化 WebDriver
driver = webdriver.Chrome()

# 打开网页
driver.get("https://www.ceshiren.com")

# 执行鼠标滚动操作
actions = ActionChains(driver)
actions.move_by_offset(0, 1000).perform()  # 向下滚动1000像素

在这个示例中,我们首先导入了Selenium WebDriver和ActionChains类。然后,我们初始化了一个Chrome WebDriver(你也可以使用其他WebDriver,如Firefox或Edge),并打开了一个示例网页。最后,我们创建了一个ActionChains对象,并使用move_by_offset方法来模拟向下滚动1000像素。

使用实例

让我们来看一个实际的应用场景:如何利用模拟鼠标滚动来进行网页截图。假设我们需要对一个长页面进行截图,但是一次性无法完整显示所有内容,这时模拟鼠标滚动就变得至关重要。代码如下:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

# 初始化 WebDriver
driver = webdriver.Chrome()

# 打开网页
driver.get("https://www.ceshiren.com")

# 获取页面高度
height = driver.execute_script("return document.body.scrollHeight")

# 设置窗口大小
driver.set_window_size(1200, height)

# 创建 ActionChains 对象
actions = ActionChains(driver)

# 循环执行滚动截图
scroll_step = 800  # 每次滚动的像素数
current_position = 0
while current_position < height:
    actions.move_by_offset(0, scroll_step).perform()
    current_position += scroll_step

# 截图
driver.save_screenshot("screenshot.png")

# 关闭浏览器
driver.quit()

在这个示例中,我们首先打开了一个示例网页,然后获取了整个页面的高度。接下来,我们设置了浏览器窗口的大小,确保可以容纳整个页面。然后,我们创建了一个ActionChains对象,并循环执行鼠标滚动操作,每次滚动一定像素数,直到滚动到页面底部。最后,我们使用save_screenshot方法来保存整个页面的截图。

总结

使用Selenium模拟鼠标滚动操作可以让我们轻松地执行各种Web自动化任务,包括截图、数据抓取等。通过灵活运用ActionChains类,我们可以模拟各种用户行为,从而实现更加复杂的自动化操作。

标签:滚动,鼠标,ActionChains,Selenium,driver,模拟
From: https://www.cnblogs.com/hogwarts/p/18095057

相关文章

  • 园子周边第2季:更大的鼠标垫,没有logo的鼠标垫
    感谢大家对园子第1季鼠标垫的支持!到目前卖出700多件,卖的最好的是深蓝色有字款,由于春节假期无法发货以及春节后集中全站资源推广阿里云广告,第1季鼠标垫没有进行足够的推广。万事开头难,园子的周边商店总算顺利地迈出了第一步。这次发布的第2季第1款是蓝色大鼠标垫,尺寸是900x400x5......
  • 简单好用轻量的GIF录制软件——配合全局鼠标手势实现随时随地录制
    GIF录制软件——Gif123Gif123-极简GIF录屏工具https://gif123.aardio.com/极简GIF录屏工具,可一键快速复制GIF图像并直接粘贴到其他程序。支持粘贴到本地文件、QQ、微信、Word、浏览器编辑器(支持公众号、头条编辑器)。可避免无法预览、无效图像、变静态图等常见的兼......
  • 通过selenium获取性能日志中的response的body
    selenium==4.14.0以下的就不支持以下设置方法参见:详见fromseleniumimportwebdriverfromselenium.webdriver.chrome.serviceimportServicefromselenium.webdriver.chrome.optionsimportOptionsimporttimeimportjson#设置ChromeWebDriver的路径chrome_dr......
  • selenium(6)窗口,弹窗,以及iframe的操作
    1.current_window_handle  :可以获取当前窗口的句柄2.window_handles:可以获取所有窗口的句柄3.switch_to.window(handle): 可以切换到指定的窗口,其中handle是窗口的句柄。4.close() :关闭当前窗口。5.switch_to.alert():切换到浏览器弹出框同时可以使用driver.switch_to.al......
  • selenium(5)鼠标,键盘事件
    鼠标的操作click()左击context_click()右击double_click()双击move_to_element()移动鼠标到元素中间(悬停)click_and_hold()在元素上按下鼠标左键release()释放鼠标perform()执行ActionChains中存储的动作  在Selenium中,要执行一些复杂的鼠标和键盘操作,如右击、双击、......
  • 【复现】【免费】基于多时间尺度滚动优化的多能源微网双层调度模型
    目录主要内容     部分代码     结果一览   1.原文结果2.程序运行结果下载链接主要内容   该模型参考《CollaborativeAutonomousOptimizationofInterconnectedMulti-EnergySystemswithTwo-StageTransactiveControlFramework》,主要解决的......
  • 使用opnecv裁剪鼠标所选范围的图片
    使用opnecv裁剪鼠标所选范围的图片裁剪代码效果根据鼠标选择范围进行裁剪效果代码裁剪opencv实现裁剪很简单,确定左上角和右下角的坐标进行切片即可。代码importcv2#读取图片image=cv2.imread('blue_2.jpg')#定义裁剪区域的左上角和右下角坐标top_left......
  • VMWare17.5.0版本避坑,安装虚拟机后按下键盘和鼠标,界面会卡死
    问题描述在使用VMWare17.5.0版本安装ubuntu22.0.4.4的时候遇到问题。安装完成ubuntu之后,我在虚拟机中点击鼠标左键没有问题,单独按下键盘也没有问题,但是如果按下键盘的同时在按下鼠标左键就会卡住。而且100%稳定复现。具体的卡死按键:ctrl+鼠标左键alt+鼠标左键其实并不是真......
  • 「04」直播系统:点点鼠标,10秒学会直播系统的安装
    「04」直播系统:点点鼠标10秒学会直播系统的安装在这里给你推荐一款软件:OBS全称(OpenBroadcasterSoftware)是一款开源的实时视频录制和直播工具,广泛应用于游戏直播、教育、会议等多个领域。目前是国外软件有中文无广告全免费最好用的直播工具。OBS提供了强大而简单易用的工具......
  • Python学习之selenium爬取英雄联盟网页
    获取英雄联盟网页importtimeimportfake_useragentimportrequestsfromseleniumimportwebdriver#英雄联盟爬虫#selenium#pipinstallselenium#url,request方法来请求英雄联盟网页,但是获取时会存在来不及渲染的情况,即无法显示整个页面url='https://......