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

释放双眼,带上耳机,听听看~!

一、鼠标事件

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

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

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

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

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

分类 函数名 描述
鼠标操作 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)\\Google\\Chrome\\Application\\chromedriver.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)\\Google\\Chrome\\Application\\chromedriver.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

 

给TA打赏
共{{data.count}}人
人已打赏
随笔日记

.NET方法无限传参数技术

2020-11-9 4:02:37

随笔日记

jdbc连接数据库,中文出现乱码的问题

2020-11-9 4:02:40

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索