python自动化测试(七):鼠标事件

前置条件:

本地部署:ECShop的版本是3.0.0、Google版本是

|---------------|-----------------------------|
| Google Chrome | 65.0.3325.162 (正式版本) (32 位) |

py的selenium版本是3.11.0

目录

一、前置代码

二、ActionChains类

三、鼠标事件

[3.1 悬停事件](#3.1 悬停事件)

[3.2 左键单击](#3.2 左键单击)

[3.3 其他事件](#3.3 其他事件)

四、天猫练习-找回密码

[4.1 天猫登录-忘记密码-拖动滑条](#4.1 天猫登录-忘记密码-拖动滑条)

[4.2 拖动元素](#4.2 拖动元素)


一、前置代码

python 复制代码
# coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
dr = webdriver.Chrome()
url = "https://www.baidu.com"
dr.get(url)
dr.maximize_window()
dr.implicitly_wait(10)

二、ActionChains类

在Selenium中,ActionChains类用于执行一系列的鼠标和键盘操作。它可以将多个操作(例如点击、拖动、滚动等)组合成一个连续的操作序列,以便自动化测试或交互操作。

python 复制代码
1.click-----单击鼠标左键
2.context_click-----点击鼠标右键
3.click_and_hold-----点击鼠标左键不松开
4.double_click-----双击鼠标左键
5.drag_and_drop-----拖拽某个元素到目标位置后松开
6.move_to_element-----鼠标移动到某个元素
7.release-----释放,即在某个元素位置松开鼠标左键
8.send_keys-----发送某个键到当前焦点的元素
9.key_down-----按下键盘上的某个键
10.key_up-----松开键盘上的某个键
11.perform()-----执行操作缓存队列中的所有动作
12.drag_and_drop_by_offset-----拖拽到某个坐标点后松开
13.move_by_offset-----鼠标从当前位置移动到某个坐标
14.move_to_element_by_offset-----移动到距某个元素(左上角坐标)多少距离的位置

方法参考 --> Actions(鼠标事件)方法列表-CSDN博客

三、鼠标事件

3.1 悬停事件

python 复制代码
# 一、在百度首页的"更多"按钮上悬停
# 1.1 获取元素
ele = driver.find_element_by_name("tj_briicon")
# 1.2 实例ActionChains类,传入driver
action = ActionChains(driver)
# 1.3 鼠标悬停事件
action.move_to_element(ele)
# 1.4 执行函数perform(),提交动作
action.perform()

3.2 左键单击

python 复制代码
# 一、在百度首页的"更多"按钮上左键单击
# 1.1 获取元素
ele = driver.find_element_by_name("tj_briicon")
# 1.2 实例ActionChains类,传入driver
action = ActionChains(driver)
# 1.3 鼠标单击
action.click(ele)
# 1.4 执行函数perform(),提交动作
action.perform()

3.3 其他事件

参考上方的操作方法

四、天猫练习-找回密码

4.1 天猫登录-忘记密码-拖动滑条

python 复制代码
url = "https://tmall.com"
driver.get(url)
# 在天猫首页点击"请登录"
driver.find_element_by_link_text("请登录").click()
# 点击忘记密码
driver.find_element_by_link_text("忘记密码").click()
# 切换句柄
handles = driver.window_handles
print(handles)
driver.switch_to_window(handles[-1])

4.2 拖动元素

python 复制代码
# 1、获取到滑动箭头
ele = driver.find_element_by_id("nc_1_n1z")
action = ActionChains(driver)
# 2、drag_and-drop_by_offset() 拖动到某个坐标后,松开
# 参数:
# 参数1:需要拖动的元素
# 参数2:向右拖动的距离,单位为px
# 参数3:向下拖动的距离,单位为px
action.drag_and_drop_by_offset(ele, 500, 0)
action.perform()

这里在谷歌浏览器上拖动后错误了,换其他浏览器是正常的

然后用个循环,就可以重复的去拖动了

python 复制代码
for i in range(5):
    # 1、获取到滑动箭头
    ele = driver.find_element_by_id("nc_1_n1z")
    action = ActionChains(driver)
    # 2、滑动
    action.drag_and_drop_by_offset(ele, 500, 0)
    action.perform()
    time.sleep(1)
    # 3、滑动后出错,点击
    err = driver.find_element_by_id("`nc_1_refresh1`").click()
    time.sleep(1)
相关推荐
m0_748554816 小时前
golang如何实现用户订阅偏好管理_golang用户订阅偏好管理实现总结
jvm·数据库·python
smj2302_796826527 小时前
解决leetcode第3911题.移除子数组元素后第k小偶数
数据结构·python·算法·leetcode
阿正呀7 小时前
Redis怎样实现本地缓存的高效失效通知
jvm·数据库·python
九转成圣7 小时前
Java 性能优化实战:如何将海量扁平数据高效转化为类目字典树?
java·开发语言·json
SmartRadio7 小时前
ESP32-S3 双模式切换实现:兼顾手机_路由器连接与WiFi长距离通信
开发语言·网络·智能手机·esp32·长距离wifi
2501_901200538 小时前
mysql如何设置InnoDB引擎参数_优化innodb_buffer_pool
jvm·数据库·python
laowangpython8 小时前
Rust 入门:GitHub 热门内存安全编程语言
开发语言·其他·rust·github
我叫汪枫8 小时前
在后台管理系统中,如何递归和选择保留的思路来过滤菜单
开发语言·javascript·node.js·ecmascript
_.Switch8 小时前
东方财富股票数据JS逆向:secids字段和AES加密实战
开发语言·前端·javascript·网络·爬虫·python·ecmascript
软件技术NINI8 小时前
webkit简介及工作流程
开发语言·前端·javascript·udp·ecmascript·webkit·yarn