Selenium篇9-WEB自动化中的鼠标事件

前言

Selenium篇上次分享了窗口切换,iframe切换,alert弹窗切换。大家在此切换的时候,最好加上显示等待,能够提高代码的稳定性。今天我们一起学习鼠标事件。

1、什么是鼠标事件?

简单而言就是让电脑模拟鼠标来完成操作的一段程序可以称为鼠标事件。对比鼠标事件,肯定还会有键盘事件(后续会进行分享)

2、实现

python中actionchains是selenium里面专门处理鼠标相关的操作如:鼠标移动,鼠标按钮操作(双击,右击,左击),按键和上下文菜单(鼠标右键)交互等等。

from selenium.webdriver.common.action_chains import ActionChains

2.1 看一下ActionChains的源码

在这里插入图片描述

2.2 源码里面很多鼠标事件方法详解

如下我们一起看一下几个常用的方法:

1、执行事件 perform()

def perform(self):
    # 执行行为事件

2、单机 click()

def click(self, on_element=None):
     点击:
     - 如果参数不写,那么点击的是当前鼠标位置
     - 如果参数写定位到的元素对象element,那就是点这个元素

3、鼠标左键按住元素 click_and_hold()

def click_and_hold(self, on_element=None):
     鼠标左键按住某个元素
     - 如果参数不写,那么点的是当前鼠标位置
     - 如果参数写定位到的元素对象element,那就是点这个元素

4、鼠标右键点击 context_click()

def context_click(self, on_element=None):
     鼠标右键点击
     - 如果参数不写,那么点的是当前鼠标位置
     - 如果参数写定位到的元素对象element,那就是点这个元素

5、双击鼠标 double_click()

def double_click(self, on_element=None):
      双击鼠标
      - 如果参数不写,那么点的是当前鼠标位置
      - 如果参数写定位到的元素对象element,那就是点这个元素

6、移动至目标元素 drag_and_drop(self, source, target)

def drag_and_drop(self, source, target):
      按住源元素上的鼠标左键,然后移动到目标元素并释放鼠标按钮
      - source: 按住鼠标的元素位置
      - target: 松开鼠标的元素位置

7、移动至目标坐标位置 drag_and_drop_by_offset(self, source, xoffset, yoffset)

def drag_and_drop_by_offset(self, source, xoffset, yoffset):
      按住源元素上的鼠标左键,然后移动到目标偏移量并释放鼠标按钮。
      - source: 按住鼠标的元素位置
      - xoffset: X 轴的偏移量
      - yoffset: Y 轴的偏移量

8、移动到当前鼠标位置的偏移量 move_by_offset(self, xoffset, yoffset)

def move_by_offset(self, xoffset, yoffset):
      将鼠标移动到当前鼠标位置的偏移量
      - xoffset: X轴 作为一个正整数或负整数移动到x偏移量
      - yoffset: Y轴 偏移,作为正整数或负整数。

9、鼠标悬停 move_to_element(self, to_element)

def move_to_element(self, to_element):
      鼠标悬停
      - to_element: 定位需要悬停的元素

注意:其实用得最多的就是如下几个方法:

  • 1、double.click() 双击
  • 2、context.click() 右击
  • 3、move_to_element() 悬停
  • 4、drag_and_drop()按住不动
  • 5、perform() 是完成执行操作的事件,都需要perform()

3、运用

import time
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
driver = webdriver.Chrome()
driver.implicitly_wait(30)
driver.get("http://www.baidu.com")
# 1、先找到鼠标要操作的元素
setting = driver.find_element_by_xpath('//span[@id="s-usersetting-top"]')

# 鼠标移动到设置按钮
# 2、初始化ActionChains类
action = ActionChains(driver)
# 3、将鼠标操作添加到actions列表中
action.move_to_element(setting)
# 4、调用perform()来执行
action.perform()
# ActionChains(driver).move_to_element(setting).perform()  # 一条命令也能搞定
time.sleep(3)
driver.find_element_by_xpath('//a[text()="高级搜索"]').click()
time.sleep(3)
# 退出
driver.quit()

4、总结

  • 1、相对于点击输入其他操作比鼠标操作稳定,能不使用鼠标操作就不要使用鼠标操作;
  • 2、能用别的方式代替尽量就不用鼠标,鼠标操作相对是特别不稳定的操作;
  • 3、一般用于 鼠标悬停框、鼠标拖放等等场景;

ps :

1、后续内容还有键盘事件操作,js 操作页面元素,类封装,运用以及上传文件等等内容分享,博主会抽时间进行分享。
2、有什么问题,欢迎大家评论区评论交流!谢谢大家!
3、如果觉得博主这篇博客对大家有用,麻烦评论区留下自己的‘脚印’ !

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值