• Selenium3 + Python3自动化测试系列四——鼠标事件和键盘事件


    一、鼠标事件

    在 WebDriver 中, 将这些关于鼠标操作的方法封装在 ActionChains 类提供。 

    ActionChains 类提供了鼠标操作的常用方法。

    ActionChains 类的成员源码如下图所示:

    下面我们通过一张表对上图中对外使用的成员进行分类(即带下划线的成员不放入下表):

    分类函数名描述
    鼠标操作 def click(self, on_element=None) 鼠标左键单击
    鼠标操作 def click_and_hold(self, on_element=None) 鼠标左键按键,不释放
    鼠标操作 def context_click(self, on_element=None) 鼠标右击
    鼠标操作 def double_click(self, on_element=None) 鼠标左键双击
    鼠标操作 def drag_and_drop(self, source, target) 鼠标拖曳动作,将指定元素位置拖曳到目标元素位置,来移动元素
    鼠标操作 def drag_and_drop_by_offset(self, source, xoffset, yoffset) 鼠标拖曳动作,将指定元素按沿x、y方向拖曳指定距离来移动元素
    鼠标操作 def move_by_offset(self, xoffset, yoffset) 将鼠标光标沿x、y方向移动指定距离,来实现鼠标的移动
    鼠标操作 def move_to_element(self, to_element) 将鼠标光标移动到指定的元素上
    鼠标操作 def move_to_element_with_offset(self, to_element, xoffset, yoffset) 将鼠标光标移动到指定的元素相对元素左上角位置偏移(xoffset、yoffset)的位置
    鼠标操作 def release(self, on_element=None) 释放鼠标,与click_and_hold函数配对使用
    键盘操作 def key_down(self, value, element=None) 按下指定的键盘按键
    键盘操作 def key_up(self, value, element=None) 释放已按下的键盘按键(与key_down配套使用)
    键盘操作 def send_keys(self, *keys_to_send) 键盘输入
    键盘操作 def send_keys_to_element(self, element, *keys_to_send) 给指定元素(可输入元素)进行键盘输入
    其他 def perform(self) 执行所有存储的动作
    其他 def reset_actions(self) 清空所有存储的动作
    其他 def pause(self, seconds) 在指定的时间内暂定所有的输入

      实例代码如下:

    from selenium.webdriver import Chrome
    from selenium.webdriver import ActionChains import time driver = Chrome("C:Program Files (x86)GoogleChromeApplicationchromedriver.exe") driver.get('https://www.baidu.com') ''' 搜索点击查询博客园 driver.find_element_by_id("kw").send_keys("博客园") driver.find_element_by_id("su").click() ''' #鼠标悬移至“更多产品” above = driver.find_element_by_class_name("bri") ActionChains(driver).move_to_element(above).perform() time.sleep(5) driver.quit()

    二、键盘事件

    Keys()类提供了键盘上几乎所有按键的方法。 前面了解到, send_keys()方法可以用来模拟键盘输入,

    除此 之外, 我们还可以用它来输入键盘上的按键, 甚至是组合键, 如 Ctrl+A、 Ctrl+C 等。

    selenium 提供了比较完整的键盘操作,在使用的模拟键盘操作之前需要我们导入

    from selenium.webdriver.common.keys import Keys即可,然后就可以来模拟键盘操作。

    #导入Keys 模块,然后我们看看Keys 模块定义了那些按键
    from selenium.webdriver.common.keys import Keys

    导入模块以后,我们可以看看具体的定义按键内容,我已经把经常使用的按键注释标记。

        NULL = 'ue000'
        CANCEL = 'ue001'  # ^break
        HELP = 'ue002'
        BACKSPACE = 'ue003'
        BACK_SPACE = BACKSPACE   #删除键
        TAB = 'ue004'   #TAB键
        CLEAR = 'ue005'  
        RETURN = 'ue006'
        ENTER = 'ue007'   #回车键
        SHIFT = 'ue008'   #Shift键
        LEFT_SHIFT = SHIFT
        CONTROL = 'ue009'
        LEFT_CONTROL = CONTROL   #Ctrl 键
        ALT = 'ue00a'           #Alt 键
        LEFT_ALT = ALT
        PAUSE = 'ue00b'
        ESCAPE = 'ue00c'   #ECS键
        SPACE = 'ue00d'    #空格键 
        PAGE_UP = 'ue00e'   #PgUp 键
        PAGE_DOWN = 'ue00f' #PgDwon 键
        END = 'ue010'    #END 键
        HOME = 'ue011'   #HOME 键
        LEFT = 'ue012'  #左键
        ARROW_LEFT = LEFT  
        UP = 'ue013'    #上键
        ARROW_UP = UP   
        RIGHT = 'ue014'
        ARROW_RIGHT = RIGHT  #右键
        DOWN = 'ue015'      #下键
        ARROW_DOWN = DOWN  
        INSERT = 'ue016'    #insert键 
        DELETE = 'ue017'    #del键
    
        SEMICOLON = 'ue018'  #';'键
        EQUALS = 'ue019'     #'='键
      #数字键盘
        NUMPAD0 = 'ue01a'  # number pad keys
        NUMPAD1 = 'ue01b'
        NUMPAD2 = 'ue01c'
        NUMPAD3 = 'ue01d'
        NUMPAD4 = 'ue01e'
        NUMPAD5 = 'ue01f'
        NUMPAD6 = 'ue020'
        NUMPAD7 = 'ue021'
        NUMPAD8 = 'ue022'
        NUMPAD9 = 'ue023'
        MULTIPLY = 'ue024' # '*' 键
        ADD = 'ue025'   # '+' 键
        SEPARATOR = 'ue026'  #','键
        SUBTRACT = 'ue027'  # '-' 键
        DECIMAL = 'ue028'   # '.'键
        DIVIDE = 'ue029'    #'/'键
    
        F1 = 'ue031'  # function  keys
        F2 = 'ue032'
        F3 = 'ue033'
        F4 = 'ue034'
        F5 = 'ue035'
        F6 = 'ue036'
        F7 = 'ue037'
        F8 = 'ue038'
        F9 = 'ue039'
        F10 = 'ue03a'
        F11 = 'ue03b'
        F12 = 'ue03c'
    
        META = 'ue03d'
        COMMAND = 'ue03d'

    组合键,比如我们经常使用的Ctrl + A ,Ctrl + C 等都是组合键。我们先看个例子

    在使用按键操作的时候我们需要借助一下send_keys()来模拟操作,Keys.CONTROL 也就是我们键盘上的Ctrl键,下面是几个常用的组合键。

    send_keys(Keys.CONTROL,'a')   #全选(Ctrl+A)

    send_keys(Keys.CONTROL,'c')   #复制(Ctrl+C)

    send_keys(Keys.CONTROL,'x')   #剪切(Ctrl+X)

    send_keys(Keys.CONTROL,'v')   #粘贴(Ctrl+V)

    下面我们来练个手,看看键盘操作和组合键如何使用吧

    from selenium.webdriver import Chrome
    from selenium.webdriver.common.keys import Keys
    import time
    driver = Chrome("C:Program Files (x86)GoogleChromeApplicationchromedriver.exe")
    driver.get('https://www.baidu.com')
    #搜索点击查询博客园,多输入一个园字
    driver.find_element_by_id("kw").send_keys("博客园园")
    time.sleep(2)
    #backspace回格键,删除多输入一个的 园
    driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)
    time.sleep(2)
    #输入空格键,重新输入python
    driver.find_element_by_id("kw").send_keys(Keys.SPACE)
    driver.find_element_by_id("kw").send_keys("Python")
    #ctrl+a 全选输入框的内容
    driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')
    time.sleep(2)
    #ctrl+x 剪切输入框的内容
    driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')
    time.sleep(2)
    #ctrl+v 粘贴内容到输入框
    driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'v')
    time.sleep(2)
    #通过回车键来代替单击操作
    driver.find_element_by_id("su").send_keys(Keys.ENTER)
    time.sleep(5)
    driver.quit()

    除了上面介绍的键盘操作和组合键以外,还有一些其他常用的非组合键键盘操作,其实我们上面实例中已经介绍过一些了。

    回车键 Keys.ENTER

    删除键 Keys.BACK_SPACE

    空格键 Keys.SPACE

    制表键 Keys.TAB

    回退键 Keys.ESCAPE

    刷新键 Keys.F5

  • 相关阅读:
    家庭内网向导帮助文档
    Nginx 容器连接 php rc-fpm 容器编译 php
    samba 容器实现共享
    编程思想(POP,OOP,SOA,AOP)
    OOP(面向对象编程)
    MySql5.6 Window超详细安装教程
    JAVA设计模式:状态模式
    Mysql设置创建时间字段和更新时间字段自动获取时间,填充时间
    eclipse里新建work set,将项目分组放在不同文件夹
    错误记录
  • 原文地址:https://www.cnblogs.com/wuweiblogs/p/10601616.html
Copyright © 2020-2023  润新知