Selenium键盘事件

Posted lc-blogs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium键盘事件相关的知识,希望对你有一定的参考价值。

前言:执行自动化测试过程中遇到操作键盘的按键,例如:全选、复制、剪切、粘贴、空格、删除等等操作,如何模拟键盘中的按键操作?

1、键盘操作分类

  • send_keys() # 输入内容
  • send_keys(Keys.BACK_SPACE) # 删除键
  • send_keys(Keys.SPACE) # 空格键
  • send_keys(Keys.TAB) # 制表键
  • send_keys(Keys.ESCAPE) # 回退键ESC
  • send_keys(Keys.ENTER) # 回车键
  • 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)
  • send_keys(Keys.LEFT) # 指针左移
  • send_keys(Keys.RIGHT) # 指针右移
  • send_keys(Keys.UP) # 指针上移
  • send_keys(Keys.DOWN) # 指针下移

提示:selenium 提供 Keys 类包用于模拟键盘的按键操作,在使用时需要先导入


2、键盘操作方法

# 打开Chrome浏览器
driver = webdriver.Chrome("../login/chromedriver.exe")

# 浏览器访问百度
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"  >
				<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" ><input type="submit" id="d" value="登录"/></td>
					<td align="center" ><input type="reset" id="c" value="重置" /></td>
				</tr>
		</form>
	</body>
</html>

以上是关于Selenium键盘事件的主要内容,如果未能解决你的问题,请参考以下文章

selenium测试(Java)-- 键盘事件

selenium的鼠标和键盘事件

selenium鼠标键盘事件

Selenium常用的键盘的操作

Python+Selenium笔记(十四)鼠标与键盘事件

selenium鼠标事件与键盘事件