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" >密&nbsp;&nbsp;&nbsp;码:</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>

posted @ 2023-03-17 17:54  ll=ll  阅读(176)  评论(0编辑  收藏  举报