前言
有一段时间没有更新Selenium相关的博客内容,今天趁着周末总结一篇关于Selenium自动化中的键盘事件。大家有时间可以看一下Selenium栏前面的相关内容。
1、概念
什么是键盘事件。Web自动化中的键盘事件指的是,让机器模拟人在键盘上完成的动作称为键盘事件。在Selenium中,提供了一个Keys来完成键盘事件。
2、Keys源码
# 导入Keys 模块
from selenium.webdriver.common.keys import Keys
from __future__ import unicode_literals
class Keys(object):
"""
Set of special keys codes.
"""
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'
大家可以查看源码后,Keys类中有很多属性,每一个属性代表键盘中一个按钮。
3、使用
# 导入Keys 模块
from selenium.webdriver.common.keys import Keys
3.1 单键使用
回车键 Keys.ENTER
删除键 Keys.BACK_SPACE
空格键 Keys.SPACE
制表键 Keys.TAB
回退键 Keys.ESCAPE
刷新键 Keys.F5
3.2 组合键使用
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)
4、运用
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
# 初始化浏览器后,习惯性加上隐式等待
driver.implicitly_wait(30)
driver.get("http://www.baidu.com")
input_ele = driver.find_element_by_id("kw")
input_ele.send_keys('拉菲Maynard优快云')
# 输入回车,在元素上调用.send_keys()
# 使用回车键
input_ele.send_keys(Keys.ENTER)
time.sleep(2)
driver.quit()
5、总结
- 1、键盘事件是element的行为,不是driver的行为;
- 2、Keys类把所有键盘位置按钮对应都封装成了一个属性,提高了可读性,使用起来更加方便;
ps :
1、后续内容还有js 操作页面元素,类封装,运用以及上传文件等等内容分享,博主会抽时间进行分享。
2、有什么问题,欢迎大家评论区评论交流!谢谢大家!
3、如果觉得博主这篇博客对大家有用,麻烦评论区留下自己的‘脚印’ !