欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-05-04 14:15:29
一、鼠标事件 在 WebDriver 中, 将这些关于鼠标操作的方法封装在 ActionChains 类提供。 ActionChains 类提供了鼠标操作的常用方法。 ActionChains 类的成员源码如下图所示: 下面我们通过一张表对上图中对外使用的成员进行分类(即带下划线的成员不放入下表): ......

一、鼠标事件

在 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