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)\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
上一篇: c/c++ lambda 表达式 介绍
下一篇: 贪官和珅:对妻子尊重爱护,对兄弟提携保护