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

前言

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

1、什么是鼠标事件?

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

2、实现

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

from selenium.webdriver.common.action_chains import ActionChains

2.1 看一下ActionChains的源码

Selenium篇9-WEB自动化中的鼠标事件_第1张图片

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、如果觉得博主这篇博客对大家有用,麻烦评论区留下自己的‘脚印’ !

你可能感兴趣的:(Selenium,selenium)