前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >selenium+python自动化93-鼠标事件(ActionChains)源码详解

selenium+python自动化93-鼠标事件(ActionChains)源码详解

作者头像
上海-悠悠
发布2018-04-13 14:46:46
1.7K0
发布2018-04-13 14:46:46
举报

ActionChains简介

actionchains是selenium里面专门处理鼠标相关的操作如:鼠标移动,鼠标按钮操作,按键和上下文菜单(鼠标右键)交互。 这对于做更复杂的动作非常有用,比如悬停和拖放。

actionchains也可以和快捷键结合起来使用,如ctrl,shif,alt结合鼠标一起使用

当你使用actionchains对象方法,行为事件是存储在actionchains对象队列。当你使用perform(),事件按顺序执行。

  • 方法一:可以写一长串
代码语言:javascript
复制
menu = driver.find_element_by_css_selector(".nav")

hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")

ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()
  • 方法二:可以分几步写
代码语言:javascript
复制
menu = driver.find_element_by_css_selector(".nav")

hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")

actions = ActionChains(driver)
actions.move_to_element(menu)
actions.click(hidden_submenu)
actions.perform()

无论哪种方式,操作都是按照调用的顺序执行挨个执行!

方法介绍

1.以下提到的Keys类,是selenium里面的键盘事件类,导入方法:

from selenium.webdriver.common.keys import Keys

2.鼠标事件使用导入方法:

from selenium.webdriver.common.action_chains import ActionChains

代码语言:javascript
复制
class ActionChains(object):
    def __init__(self, driver):
        self._driver = driver
        self._actions = []

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

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

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

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

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

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

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

    def key_down(self, value, element=None):
        只发送一个按键,而不释放它。只应用于修饰键(控制、alt和shift)。

        - value: 要发送的修饰符键。值在“Keys”类中定义。
        - element: 定位的元素
        如果element参数不写就是当前鼠标的位置

        举个例子,按住 ctrl+c::

        ActionChains(driver).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()

    def key_up(self, value, element=None):
        # 释放按键,配合上面的一起使用

    def move_by_offset(self, xoffset, yoffset):
        将鼠标移动到当前鼠标位置的偏移量

         - xoffset: X轴 作为一个正整数或负整数移动到x偏移量
         - yoffset: Y轴 偏移,作为正整数或负整数。

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

    def move_to_element_with_offset(self, to_element, xoffset, yoffset):
        通过指定元素的偏移量移动鼠标。偏移量与元素的左上角相对
        - to_element: 定位需要悬停的元素
        - xoffset: X 轴偏移量
        - yoffset: Y 轴偏移量

    def release(self, on_element=None):
        释放一个元素上的鼠标按钮。

        - 如果参数不写,那么是当前鼠标位置
        - 如果参数写定位到的元素对象element,那就是这个元素.

    def send_keys(self, *keys_to_send):
        发送到当前焦点元素
        要发送的按键。修饰符键常数可以在“Keys”类。


    def send_keys_to_element(self, element, *keys_to_send):
        发送到定位到的元素上
        - element: 定位的元素
        - keys_to_send: 要发送的按键。修饰符键常数可以在“Keys”类。

源码可以在以下目录查看:Lib\site-packages\selenium\webdriver\common\action_chains.py

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ActionChains简介
  • 方法介绍
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档