之前在做自動化測試中需要用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
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
方向鍵:上
至此,我們可以寫出模擬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)