python模拟ctrl+v
2015-07-25 16:05
651 查看
转自:http://blog.csdn.net/zhouy1989/article/details/13997507
之前在做自动化测试中需要用Python在linux中模拟Ctrl+V 进行路径粘贴,试了很多种方法,起初用了xerox和pyperclip这两个python库,但打开对话框后调用粘贴API无法进行粘贴,不知道为什么。
然后发现了virtkey这个库,这个库可以在linux 中模拟键盘按键,但网上资料甚少。这个库主要有两个API
1、press_keysym/release_keysym
2、press_unicode/release_unicode
第一个接受keysym作为参数,第二个接受键盘的unicode,键盘unicode用来模拟字母键还是很方便的,但要模拟Ctrl这样的键一直没找到方法,最终找到了一个关于keysym的表,解决了问题,表如下
至此,我们可以写出模拟Ctrl+V的代码
import virtkey
import time
v = virtkey.virtkey()
v.press_keysym(65507) #Ctrl键位
v.press_unicode(ord('v')) #模拟字母V
v.release_unicode(ord('v'))
v.release_keysym(65507)
time.sleep(5)
v.press_keysym(65421) #Enter
v.release_keysym(65421)
之前在做自动化测试中需要用Python在linux中模拟Ctrl+V 进行路径粘贴,试了很多种方法,起初用了xerox和pyperclip这两个python库,但打开对话框后调用粘贴API无法进行粘贴,不知道为什么。
然后发现了virtkey这个库,这个库可以在linux 中模拟键盘按键,但网上资料甚少。这个库主要有两个API
1、press_keysym/release_keysym
2、press_unicode/release_unicode
第一个接受keysym作为参数,第二个接受键盘的unicode,键盘unicode用来模拟字母键还是很方便的,但要模拟Ctrl这样的键一直没找到方法,最终找到了一个关于keysym的表,解决了问题,表如下
.keysym | .keycode | .keysym_num | Key |
Alt_L | 64 | 65513 | 左手边的Alt键 |
Alt_R | 113 | 65514 | 右手边的Alt键 |
BackSpace | 22 | 65288 | BackSpace |
Cancel | 110 | 65387 | Pause Break |
Caps_Lock | 66 | 65549 | CapsLock |
Control_L | 37 | 65507 | 左手边的Control键 |
Control_R | 109 | 65508 | 右手边的Control键 |
Delete | 107 | 65535 | Delete |
Down | 104 | 65364 | 方向键:下 |
End | 103 | 65367 | End |
Escape | 9 | 65307 | Esc |
Execute | 111 | 65378 | 系统调用 |
F1 | 67 | 65470 | F1 |
F2 | 68 | 65471 | F2 |
Fi | 66+i | 65469+i | Fi |
F12 | 96 | 68481 | F12 |
Home | 97 | 65360 | Home |
Insert | 106 | 65379 | Insert |
Left | 100 | 65361 | 方向键:左 |
Linefeed | 54 | 106 | Linefeed(Ctrl-j) |
KP_0 | 90 | 65438 | 数字键:0 |
KP_1 | 87 | 65436 | 数字键:1 |
KP_2 | 88 | 65433 | 数字键:2 |
KP_3 | 89 | 65435 | 数字键:3 |
KP_4 | 83 | 65430 | 数字键:4 |
KP_5 | 84 | 65437 | 数字键:5 |
KP_6 | 85 | 65432 | 数字键:6 |
KP_7 | 79 | 65429 | 数字键:7 |
KP_8 | 80 | 65431 | 数字键:8 |
KP_9 | 81 | 65434 | 数字键:9 |
KP_Add | 86 | 65451 | 运算键:+ |
KP_Begin | 84 | 65437 | 小键盘:5号键 |
KP_Decimal | 91 | 65439 | “.”键 |
KP_Delete | 91 | 65439 | Delete |
KP_Divide | 112 | 65455 | “/”键 |
KP_Down | 88 | 65433 | 方向键:下 |
KP_End | 87 | 65436 | End |
KP_Enter | 108 | 65421 | Enter |
KP_Home | 79 | 65429 | Home |
KP_Insert | 90 | 65438 | Insert |
KP_Left | 83 | 65430 | 方向键:左 |
KP_Multiply | 63 | 65450 | 运算键:* |
KP_Next | 89 | 65435 | PageDown |
KP_Prior | 81 | 65434 | PageUp |
KP_Right | 85 | 65432 | 方向键:右 |
KP_Subtract | 82 | 65453 | “-”键 |
KP_Up | 80 | 65431 | 方向键:上 |
Next | 105 | 65366 | PageDown |
Num_Lock | 77 | 65407 | NumLock |
Pause | 110 | 65299 | Pause |
Print | 111 | 65377 | PrintScreen |
Prior | 99 | 65365 | PageUp |
Return | 36 | 65293 | 回车键 |
Right | 102 | 65363 | 方向键:右 |
Scroll_Lock | 78 | 65300 | ScrollLock |
Shift_L | 50 | 65505 | 左手边的Shift键 |
Shift_R | 62 | 65506 | 有手边的Shift键 |
Tab | 23 | 65289 | Tab |
Up | 98 | 65362 | 方向键:上 |
import virtkey
import time
v = virtkey.virtkey()
v.press_keysym(65507) #Ctrl键位
v.press_unicode(ord('v')) #模拟字母V
v.release_unicode(ord('v'))
v.release_keysym(65507)
time.sleep(5)
v.press_keysym(65421) #Enter
v.release_keysym(65421)
相关文章推荐
- Python Iteration,itertools(Python迭代器,itertool个人总结)
- openCV—Python(4)—— 基本绘图
- python短信轰炸机版本smsbomb----------部分(post)
- python基础教程总结15——1.即时标记
- python在windows下多版本共存
- python在windows下多版本共存
- Python 实现类似PHP的strip_tags功能,并能够定义他们自己的一套保留标记
- Python计算已经过去多少个周末的方法
- python基础教程总结14——测试
- openCV—Python(3)—— 访问与操作像素
- Python基于动态规划算法计算单词距离
- Python中Django框架利用url来控制登录的方法
- openCV—Python(2)—— 加载、显示和保存图像
- [Python]import 出错
- 使用Eclipse编写Python
- openCV—Python(1)——初始化环境
- python RESTful API框架:Eve 快速入门
- Python实现模拟登录及表单提交的方法
- python函数调用入门
- Python基于有道实现英汉字典功能