selenium键盘鼠标事件ActionChains

说明:本篇博客基于selenium 4.1.0

ActionChains说明

ActionChains都是selenium的一个模块,提供模拟鼠标动作和键盘动作的功能


ActionChains使用方法

# 步骤1:实例化一个ActionChains动作容器
actions = ActionChains(driver, 250)

# 步骤2:往动作容器中依次添加动作
actions.click(ele_click)                              # 调用的动作都会添加到动作容器中
actions.click_and_hold(ele_drag).release(ele_item2)   # 链式添加动作。每个动作返回值为容器对象,因此支持链式连续添加

# 步骤3:执行动作
actions.perform()

ActionChains动作列表

import time
from selenium import webdriver
from selenium.webdriver import ActionChains, Keys
from selenium.webdriver.common.by import By


driver = webdriver.Chrome()
driver.implicitly_wait(5)

# 创建动作容器
actions = ActionChains(driver, 250)


# 等待
n = 3
actions.pause(n)          # 插入在动作中,强制暂停n秒


# 鼠标点击
driver.get('http://sahitest.com/demo/clicks.htm')
ele_click = driver.find_ele
### 使用 Selenium WebDriver 的 ActionChains ActionChainsSelenium 提供的一个类,用于执行复杂的用户交互动作。这些动作可以包括鼠标移动、点击、按住不放以及键盘输入等。 #### 导入必要的模块 为了使用 `ActionChains` 类,首先需要从 `selenium.webdriver` 模块中导入它: ```python from selenium.webdriver import ActionChains ``` #### 创建 ActionChains 实例 创建一个 `ActionChains` 对象实例时,需传递浏览器驱动程序作为参数: ```python action_chains = ActionChains(driver) ``` #### 执行基本的鼠标操作 下面是一个简单的例子,展示了如何利用 `ActionChains` 来实现鼠标的按下和释放操作[^2]: ```python from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.actions.mouse_button import MouseButton # 假设已经有一个名为driver的WebDriver实例 action_builder = ActionBuilder(driver) # 定义并执行指针按下和松开的动作序列 action_builder.pointer_action.pointer_down(MouseButton.BACK) action_builder.pointer_action.pointer_up(MouseButton.BACK) action_builder.perform() ``` #### 处理页面内的滚动行为 对于网页中的元素定位后进行精确滚动的情况,可以通过计算目标位置相对于视口的位置来进行滚动操作[^3]: ```python footer = driver.find_element(By.TAG_NAME, "footer") delta_y = footer.rect['y'] ActionChains(driver)\ .scroll_by_amount(0, delta_y)\ .perform() ``` 这里的关键在于找到要滚到的目标元素(本例中为页脚),并通过其坐标信息决定滚动的距离。 #### 应对滑动条验证挑战 当遇到带有滑动条验证码的网站时,模拟真实的拖拽过程可以帮助绕过这种类型的防护措施。这通常涉及到连续的小步长移动而不是一次性大跨度位移,以模仿人类的行为模式[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值