版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
对于模拟键盘事件,我们之前的文章中已经有了一些了解,比如基础操作send_keys()方法输入任意值、鼠标事件key_down()、key_up()等,这一节呢,我们也比较简单,我们专门来讲一讲如何使用引入的common.keys库来模拟键盘来操控浏览器。
一、基础格式写法
具体用法其实和我们之前对浏览器输入框所用的方法:send_keys()是一样的,只不过我们通过keys类,可以输入webdriver包中对应的键盘操作。
**Keys.BACK_SPACE:回退键(BackSpace)****# Keys.TAB:制表键(Tab)**
# Keys.ENTER:回车键(Enter)
# Keys.SHIFT:大小写转换键(Shift)
# Keys.CONTROL:Control键(Ctrl)
# Keys.ALT:ALT键(Alt)
# Keys.ESCAPE:返回键(Esc)
# Keys.SPACE:空格键(Space)
# Keys.PAGE_UP:翻页键上(Page Up)
# Keys.PAGE_DOWN:翻页键下(Page Down)
# Keys.END:行尾键(End)
# Keys.HOME:行首键(Home)
# Keys.LEFT:方向键左(Left)
# Keys.UP:方向键上(Up)
# Keys.RIGHT:方向键右(Right)
# Keys.DOWN:方向键下(Down)
# Keys.INSERT:插入键(Insert)
# DELETE:删除键(Delete)
# NUMPAD0 ~ NUMPAD9:数字键1-9
# F1 ~ F12:F1 - F12键
# (Keys.CONTROL, ‘a’):组合键Control+a,全选
# (Keys.CONTROL, ‘c’):组合键Control+c,复制
# (Keys.CONTROL, ‘x’):组合键Control+x,剪切
# (Keys.CONTROL, ‘v’):组合键Control+v,粘贴
首先我们要导入keys库
- from selenium.webdriver.common.keys import Keys
输入单个键盘按键:
- 小键盘按键3:send_keys(Keys.NUMPAD3)
输入多次的同一个按键
- 按10次小键盘按键3:send_keys(Keys.NUMPAD3*10)
输入组合按键:
- 全选Ctrl+A: send_keys(Keys.CONTROL, "a")
二、键盘按键引用对照
我们通过keys类中,找到了键盘按键所对应的值:
-
NULL =
'\ue000'
-
CANCEL =
'\ue001'
# ^break
-
HELP =
'\ue002'
-
BACKSPACE =
'\ue003'
-
BACK_SPACE = BACKSPACE
-
TAB =
'\ue004'
-
CLEAR =
'\ue005'
-
RETURN =
'\ue006'
-
ENTER =
'\ue007'
-
SHIFT =
'\ue008'
-
LEFT_SHIFT = SHIFT
-
CONTROL =
'\ue009'
-
LEFT_CONTROL = CONTROL
-
ALT =
'\ue00a'
-
LEFT_ALT = ALT
-
PAUSE =
'\ue00b'
-
ESCAPE =
'\ue00c'
-
SPACE =
'\ue00d'
-
PAGE_UP =
'\ue00e'
-
PAGE_DOWN =
'\ue00f'
-
END =
'\ue010'
-
HOME =
'\ue011'
-
LEFT =
'\ue012'
-
ARROW_LEFT = LEFT
-
UP =
'\ue013'
-
ARROW_UP = UP
-
RIGHT =
'\ue014'
-
ARROW_RIGHT = RIGHT
-
DOWN =
'\ue015'
-
ARROW_DOWN = DOWN
-
INSERT =
'\ue016'
-
DELETE =
'\ue017'
-
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 + C 、Ctrl + V复制到用户名输入框。
-
from selenium
import webdriver
-
from selenium.webdriver.common.keys
import Keys
-
from time
import sleep
-
-
# 模拟键盘操作-百度登录页面
-
driver = webdriver.Chrome()
-
driver.get(
"https://passport.baidu.com/v2/?reg")
-
-
# 用户名元素定位和手机号元素定位
-
name_element=driver.find_element_by_css_selector(
"#TANGRAM__PSP_3__userName")
-
phone_element=driver.find_element_by_css_selector(
"#TANGRAM__PSP_3__phone")
-
-
# 在名字输入框输入10个数字键3
-
name_element.send_keys(Keys.NUMPAD3*
10)
-
-
# 在手机号输入框输入手机号码
-
phone_element.send_keys(
"18812345678")
-
-
# 在手机号输入框进行组合键Ctrl+a 、 Ctrl+x
-
phone_element.send_keys(Keys.CONTROL,
"a")
-
sleep(
1)
-
phone_element.send_keys(Keys.CONTROL,
"x")
-
-
# 在名字输入框输入组合键Ctrl+v
-
name_element.clear()
-
name_element.send_keys(Keys.CONTROL,
"v")
-