Selenium键盘事件
前言:执行自动化测试过程中遇到操作键盘的按键,例如:全选、复制、剪切、粘贴、空格、删除等等操作,如何模拟键盘中的按键操作?
1、导入Keys包
想使用selenium中的键盘事件,首先我们必须导入Keys包,需要注意的是包名称Keys首字母需要大写
from selenium.webdriver.common.keys import Keys # 使用键盘操作,要导入Keys包
2、键盘操作分类
-
send_keys(): 输入内容(括号中填写输入内容)
-
send_keys(Keys.BACK_SPACE):删除键(BackSpace)
-
send_keys(Keys.SPACE):空格键(Space)
-
send_keys(Keys.TAB):制表键(Tab)
-
send_keys(Keys.ESCAPE):回退键(ESC)
-
send_keys(Keys.ENTER):回车键(Enter)
-
send_keys(Keys.ALT):ALT键(Alt)
-
send_keys(Keys.DELETE):删除键(Delete)
-
send_keys(Keys.SHIFT):大小写转换键(Shift)
-
send_keys(Keys.PAGE_UP):翻页键上(Page Up)
-
send_keys(Keys.PAGE_DOWN):翻页键下(Page Down)
-
send_keys(Keys.END):行尾键(End)
-
send_keys(Keys.HOME):行首键(Home)
-
send_keys(Keys.INSERT):插入键(Insert)
-
send_keys(Keys.LEFT):方向键左(Left)
-
send_keys(Keys.RIGHT):方向键右(Right)
-
send_keys(Keys.UP):方向键上(Up)
-
send_keys(Keys.DOWN):方向键下(Down)
-
send_keys(Keys.NUMPAD0):NUMPAD0 ~ NUMPAD9 数字键(1-9)
-
send_keys(Keys.F1):F1 ~ F12(F1 - F12键)
-
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
3、键盘操作方法
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys # 使用键盘操作,要导入Keys类包
# 打开Chrome浏览器
driver = webdriver.Chrome("../login/chromedriver.exe")
# 浏览器访问本地的html页面
driver.get(r"D:\ac\test.html")
# 根据id定位百度输入框并输入abcd
driver.find_element_by_id("u").send_keys("abcd")
# 根据id定位百度输入框,Keys.BACK_SPACE模拟键盘删除最后一个字母d
driver.find_element_by_id("u").send_keys(Keys.BACK_SPACE)
time.sleep(1)
# 根据id定位用户名输入框,Keys.SPACE模拟键盘的空格键
driver.find_element_by_id("u").send_keys(Keys.SPACE)
time.sleep(1)
# 根据id定位用户名输入框,在原来的abc 后面输入123
driver.find_element_by_id("u").send_keys("123")
time.sleep(1)
# 根据id定位用户名输入框,模拟键盘ctrl+a选中用户名输入框所有数据
driver.find_element_by_id("u").send_keys(Keys.CONTROL, 'a')
time.sleep(1)
# 根据id定位用户名输入框,模拟键盘ctrl+c复制选中的用户名输入框的内容
driver.find_element_by_id("u").send_keys(Keys.CONTROL, 'c')
time.sleep(1)
# 根据id定位用户名输入框,模拟键盘的Tab键切换到密码输入框
driver.find_element_by_id("u").send_keys(Keys.TAB)
time.sleep(1)
# 根据id定位密码输入框,模拟键盘ctrl+v粘贴复制的内容到密码输入框
driver.find_element_by_id("p").send_keys(Keys.CONTROL, 'v')
time.sleep(1)
# 根据id定位用户名输入框,模拟键盘ctrl+a选中用户名输入框所有数据
driver.find_element_by_id("u").send_keys(Keys.CONTROL, 'a')
time.sleep(1)
# 根据id定位用户名输入框,模拟键盘ctrl+x剪切上一步选中的用户名输入框所有数据
driver.find_element_by_id("u").send_keys(Keys.CONTROL, 'x')
time.sleep(1)
# 根据id定位密码输入框,模拟键盘ctrl+v粘贴剪切的内容到密码输入框
driver.find_element_by_id("p").send_keys(Keys.CONTROL, 'v')
time.sleep(1)
# 根据id定位密码输入框,模拟键盘的左键指针向左移动一位
driver.find_element_by_id("p").send_keys(Keys.LEFT)
time.sleep(1)
# 根据id定位密码输入框,模拟键盘的左键指针向右移动一位
driver.find_element_by_id("p").send_keys(Keys.RIGHT)
time.sleep(1)
# 根据id定位密码输入框,模拟键盘的Enter键
driver.find_element_by_id("p").send_keys(Keys.ENTER)
- send_keys支持按键的组合传递,例如上述的粘贴【Ctrl+V】操作
driver.find_element_by_id("p").send_keys(Keys.CONTROL, 'v')
- send_keys通过 + 号做连接组合按键也是可行的
driver.find_element_by_id("p").send_keys(Keys.CONTROL+'v')
- 如果想同时按下三个或更多按键键,则在括号中使用 , 或 + 号追加参数即可,例如在输入框同时输入a、b、c
driver.find_element_by_id("p").send_keys('a', 'b', 'c')
driver.find_element_by_id("p").send_keys('a'+'b'+'c')
3、html代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=dvice-width, initial-scale=1">
<title>登录页面</title>
</head>
<body>
<form method="post" action="http://www.baidu.com"><!--注意需要用table-->
<table align="center" width="512" style="border:1px solid;">
<tr>
<th align="center" colspan="2">
<h1>管理员登陆</h1><!--h/p标签自动换行换段-->
</th>
</tr>
<tr>
<td align="center">登录名:</td>
<td><input type="text" placeholder="" name="username" id="u"></td>
</tr>
<tr>
<td align="center" >密 码:</td>
<td><input type="text" name="password" id="p"></td>
</tr>
<tr>
<td align="center"><input type="checkbox" value="1" checked>记住密码</td>
<td align="center"><a href="">忘记密码</a></td>
</tr>
<tr>
<td align="center" width="50%"><input type="submit" id="d" value="登录"/></td>
<td align="center" width="50%"><input type="reset" id="c" value="重置" /></td>
</tr>
</form>
</body>
</html>