Foreplay
The last article talked about mouse events in selenium. In automation, keyboard events are also very important. For example, we need to press enter, ctrl+c to copy, etc. Such operations are inseparable from keyboard events. In selenium, the Keys method is provided for us to operate the keyboard
Keys
Use the keyboard to complete the copy, cut, and paste functions< /p>
# enter python in the Baidu search box, Copy and paste Sogou input box to search
from selenium import webdriver
from selenium.webdriver.common.keys import< span style="color: #000000;"> Keys
from time import sleep
driver = webdriver.Chrome()
driver.get('http://www.baidu.com ')
driver.maximize_window()
driver.find_element_by_css_selector('#kw').send_keys('python span>')
sleep(2)
driver.find_element_by_css_selector('#kw').send_keys(Keys.CONTROL, 'a') # Select all
driver.find_element_by_css_selector('#kw').send_keys(Keys.CONTROL, 'c span>') # Copy
driver.find_element_by_css_selector('#kw').send_keys(Keys.CONTROL, 'x span>') # cut Cut
sleep(2)
driver.get('http://www.sogou.com ')
driver.find_element_by_css_selector('.sec-input< span style="color: #800000;">').send_keys(Keys.CONTROL, 'v') # Paste
sleep(2)
driver.find_element_by_css_selector('#stb').click()
sleep(2)
driver.quit()
Commonly used keys
NULL = ''
CANCEL = '' # ^break
HELP = ''
BACKSPACE = ''
BACK_SPACE = BACKSPACE #Delete key
TAB = '' #TAB key
CLEAR = ''
RETURN = ''
ENTER = '' #Enter key
SHIFT = '' #Shift key
LEFT_SHIFT = SHIFT
CONTROL = ''
LEFT_CONTROL = CONTROL #Ctrl key
ALT = '' #Alt key
LEFT_ALT = ALT
PAUSE = ''
ESCAPE = '' #ECS key
SPACE = '' #Space bar
PAGE_UP = '' #PgUp key
PAGE_DOWN = '' #PgDwon key
END = '' #END key
HOME = '' #HOME key
LEFT = '' #left click
ARROW_LEFT = LEFT
UP = '' #Up button
ARROW_UP = UP
RIGHT = ''
ARROW_RIGHT = RIGHT #right click
DOWN = '' #Down key
ARROW_DOWN = DOWN
INSERT = '' #insert key
DELETE = '' #del key
SEMICOLON = '' #';' key
EQUALS = '' #'='key
#Numeric keyboard
NUMPAD0 = '' #number pad keys
NUMPAD1 = ''
NUMPAD2 = ''
NUMPAD3 = ''
NUMPAD4 = ''
NUMPAD5 = ''
NUMPAD6 = ''
NUMPAD7 = ''
NUMPAD8 = ''
NUMPAD9 = ''
MULTIPLY = '' #'*' key
ADD = '' #'+' key
SEPARATOR = '' #',' key
SUBTRACT = '' #'-' key
DECIMAL = '' #'.' key
DIVIDE = '' #'/' key
F1 = '' # function keys
F2 = ''
F3 = ''
F4 = ''
F5 = ''
F6 = ''
F7 = ''
F8 = ''
F9 = ''
F10 = ''
F11 = ''
F12 = ''
META = ''
COMMAND = ''
View Code
Example 2
from selenium import webdriver
import unittest, time
from selenium.webdriver.common.keys import< span style="color: #000000;"> Keys
class Test_dragpage(unittest.TestCase):
def test_dragpageElement(self):
url = 'http://www.sogou.com span>'
self.driver = webdriver.Chrome()
self.driver.get(url)
self.driver.maximize_window()
query = self.driver.find_element_by_id('query ')
# Send an f12 key via WebDriver
query.send_keys(Keys.F12)
time.sleep(5)
# When pressing f12
query.send_keys(Keys.F12)
query.send_keys('selenium')
# Press Enter
query.send_keys(Keys.ENTER)
time.sleep(3)
test1 = Test_dragpage()
test1.test_dragpageElement()
Use the built-in module of WebDriver to simulate key combinations
from selenium import webdriver
import unittest, time
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import< span style="color: #000000;"> Keys
class Test_dragpage(unittest.TestCase):
def test_dragpageElement(self):
url = 'http://www.baidu.com span>'
self.driver = webdriver.Chrome()
self.driver.get(url)
input = self.driver.find_element_by_id('kw ')
input.send_keys('python')
ActionChains(self.driver).key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).perform()
time.sleep(2)
ActionChains(self.driver).key_down(Keys.CONTROL).send_keys('x').key_up(Keys.CONTROL).perform()
self.driver.get(url)
self.driver.find_element_by_id('kw').click()
ActionChains(self.driver).key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL).perform()
self.driver.find_element_by_id('su').click()
test1 = Test_dragpage()
test1.test_dragpageElement()
ActionChains(self.driver).key_down(Keys.CONTROL).send_keys(‘v’).key_up(Keys.CONTROL ).perform(), in this line of code, key_down(Keys.CONTROL) means pressing the ctrl key, send_keys(‘v’) is similar to emulating the V key, the combination is Ctrl+v, and key_down(Keys.CONTROL) means Release the Ctrl key
Operate through a third-party library
Need to install pywin32
Keyboard mapping table
VK_CODE = {'back space‘:0x08,
'tab':0x09,
'clear':0x0C,
'enter':0x0D,
'shift':0x10,
'ctrl':0x11,
'alt':0x12,
'pause':0x13,
'caps_lock':0x14,
'esc':0x1B,
'spacebar':0x20,
'page_up':0x21,
'page_down':0x22,
'end':0x23,
'home':0x24,
'left_arrow':0x25,
'up_arrow':0x26,
'right_arrow':0x27,
'down_arrow':0x28,
'select':0x29,
'print':0x2A,
'execute':0x2B,
'print_screen':0x2C,
'ins':0x2D,
'del':0x2E,
'help':0x2F,
'0':0x30,
'1':0x31,
'2':0x32,
'3':0x33,
'4':0x34,
'5':0x35,
'6':0x36,
'7':0x37,
'8':0x38,
'9':0x39,
'a':0x41,
'b':0x42,
'c':0x43,
'd':0x44,
'e':0x45,
'f':0x46,
'g':0x47,
'h':0x48,
'i':0x49,
'j':0x4A,
‘k‘:0x4B,
‘l‘:0x4C,
‘m‘:0x4D,
‘n‘:0x4E,
‘o‘:0x4F,
‘p‘:0x50,
‘q‘:0x51,
‘r‘:0x52,
‘s‘:0x53,
‘t‘:0x54,
‘u‘:0x55,
‘v‘:0x56,
‘w‘:0x57,
‘x‘:0x58,
‘y‘:0x59,
‘z‘:0x5A,
‘numpad_0‘:0x60,
‘numpad_1‘:0x61,
‘numpad_2‘:0x62,
‘numpad_3‘:0x63,
‘numpad_4‘:0x64,
‘numpad_5‘:0x65,
‘numpad_6‘:0x66,
‘numpad_7‘:0x67,
‘numpad_8‘:0x68,
‘numpad_9‘:0x69,
‘multiply_key‘:0x6A,
‘add_key‘:0x6B,
‘separator_key‘:0x6C,
‘subtract_key‘:0x6D,
‘decimal_key‘:0x6E,
‘divide_key‘:0x6F,
‘F1‘:0x70,
‘F2‘:0x71,
‘F3‘:0x72,
‘F4‘:0x73,
‘F5‘:0x74,
‘F6‘:0x75,
‘F7‘:0x76,
‘F8‘:0x77,
‘F9‘:0x78,
‘F10‘:0x79,
‘F11‘:0x7A,
‘F12‘:0x7B,
‘F13‘:0x7C,
‘F14‘:0x7D,
‘F15‘:0x7E,
‘F16‘:0x7F,
‘F17‘:0x80,
‘F18‘:0x81,
‘F19‘:0x82,
‘F20‘:0x83,
‘F21‘:0x84,
‘F22‘:0x85,
‘F23‘:0x86,
‘F24‘:0x87,
‘num_lock‘:0x90,
‘scroll_lock‘:0x91,
‘left_shift‘:0xA0,
‘right_shift ‘:0xA1,
‘left_control‘:0xA2,
‘right_control‘:0xA3,
‘left_menu‘:0xA4,
‘right_menu‘:0xA5,
‘browser_back‘:0xA6,
‘browser_forward‘:0xA7,
‘browser_refresh‘:0xA8,
‘browser_stop‘:0xA9,
‘browser_search‘:0xAA,
‘browser_favorites‘:0xAB,
‘browser_start_and_home‘:0xAC,
‘volume_mute‘:0xAD,
‘volume_Down‘:0xAE,
‘volume_up‘:0xAF,
‘next_track‘:0xB0,
‘previous_track‘:0xB1,
‘stop_media‘:0xB2,
‘play/pause_media‘:0xB3,
‘start_mail‘:0xB4,
‘select_media‘:0xB5,
‘start_application_1‘:0xB6,
‘start_application_2‘:0xB7,
‘attn_key‘:0xF6,
‘crsel_key‘:0xF7,
‘exsel_key‘:0xF8,
‘play_key‘:0xFA,
‘zoom_key‘:0xFB,
‘clear_key‘:0xFE,
‘+‘:0xBB,
‘,‘:0xBC,
‘-‘:0xBD,
‘.‘:0xBE,
‘/‘:0xBF,
‘`‘:0xC0,
‘;‘:0xBA,
‘[‘:0xDB,
‘\‘:0xDC,
‘]‘:0xDD,
"‘":0xDE,
‘`‘:0xC0}
View Code
import win32api
import win32con
class KeyboardKeys(object):
#模拟键盘按键类
VK_CODE={
‘enter‘:0x0D,
‘ctrl‘:0x11,
‘v‘:0x56
}
@staticmethod
def keyDown(keyName):
#按下按键
win32api.keybd_event(KeyboardKeys.VK_CODE[keyName],0,0,0)
@staticmethod
def keyUp(keyName):
#释放按键
win32api.keybd_event(KeyboardKeys.VK_CODE[keyName],0,win32con.KEYEVENTF_KEYUP,0)
@staticmethod
def oneKey(key):
#模拟单个按键
KeyboardKeys.keyDown(key)
KeyboardKeys.keyUp(key)
@staticmethod
def twoKeys(key1,key2):
#模拟两个组合键
KeyboardKeys.keyDown(key1)
KeyboardKeys.keyDown(key2)
KeyboardKeys.keyUp(key2)
KeyboardKeys.keyUp(key1)
Keybd_event()共有四个参数:
第一个为按键的虚拟键值,如回车键为vk_return, tab键为vk_tab(其他具体的参见附录:常用模拟键的键值对照表);
第二个参数为扫描码,一般不用设置,用0代替就行;
第三个参数为选项标志,如果为keydown则置0即可,如果为keyup则设成”KEYEVENTF_KEYUP”;
第四个参数一般也是置0即可。
调用
KeyboardKeys.oneKey(‘enter‘)
设置剪贴板
在进行自动化的时候,有时候要上传一个文件,这时会打开一个wins的窗口,但是selenium没有给我们提供操作wins窗口的方法,我们就要使用pywin32提供给我们的方法来操作
import win32clipboard as w
import win32con
class Clipboard(object):
#模拟windows设置剪贴板
#读取剪贴板
@staticmethod
def getText():
#打开剪贴板
w.OpenClipboard()
#获取剪贴板中的数据
d=w.GetClipboardData(win32con.CF_TEXT)
#关闭剪贴板
w.CloseClipboard()
#返回剪贴板数据给调用者
return d
#设置剪贴板内容
@staticmethod
def setText(aString):
#打开剪贴板
w.OpenClipboard()
#清空剪贴板
w.EmptyClipboard()
#将数据aString写入剪贴板
w.SetClipboardData(win32con.CF_UNICODETEXT,aString)
#关闭剪贴板
w.CloseClipboard()
调用
Clipboard.setText(filePath)
# 在百度搜索框输入 python ,复制粘贴搜狗输入框进行搜索
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep
driver = webdriver.Chrome()
driver.get(‘http://www.baidu.com‘)
driver.maximize_window()
driver.find_element_by_css_selector(‘#kw‘).send_keys(‘python‘)
sleep(2)
driver.find_element_by_css_selector(‘#kw‘).send_keys(Keys.CONTROL, ‘a‘) # 全选
driver.find_element_by_css_selector(‘#kw‘).send_keys(Keys.CONTROL, ‘c‘) # 复制
driver.find_element_by_css_selector(‘#kw‘).send_keys(Keys.CONTROL, ‘x‘) # 剪切
sleep(2)
driver.get(‘http://www.sogou.com‘)
driver.find_element_by_css_selector(‘.sec-input‘).send_keys(Keys.CONTROL, ‘v‘) # 粘贴
sleep(2)
driver.find_element_by_css_selector(‘#stb‘).click()
sleep(2)
driver.quit()
NULL = ‘‘
CANCEL = ‘‘ # ^break
HELP = ‘‘
BACKSPACE = ‘‘
BACK_SPACE = BACKSPACE #删除键
TAB = ‘‘ #TAB键
CLEAR = ‘‘
RETURN = ‘‘
ENTER = ‘‘ #回车键
SHIFT = ‘‘ #Shift键
LEFT_SHIFT = SHIFT
CONTROL = ‘‘
LEFT_CONTROL = CONTROL #Ctrl 键
ALT = ‘‘ #Alt 键
LEFT_ALT = ALT
PAUSE = ‘‘
ESCAPE = ‘‘ #ECS键
SPACE = ‘‘ #空格键
PAGE_UP = ‘‘ #PgUp 键
PAGE_DOWN = ‘‘ #PgDwon 键
END = ‘‘ #END 键
HOME = ‘‘ #HOME 键
LEFT = ‘‘ #左键
ARROW_LEFT = LEFT
UP = ‘‘ #上键
ARROW_UP = UP
RIGHT = ‘‘
ARROW_RIGHT = RIGHT #右键
DOWN = ‘‘ #下键
ARROW_DOWN = DOWN
INSERT = ‘‘ #insert键
DELETE = ‘‘ #del键
SEMICOLON = ‘‘ #‘;‘键
EQUALS = ‘‘ #‘=‘键
#数字键盘
NUMPAD0 = ‘‘ #number pad keys
NUMPAD1 = ‘‘
NUMPAD2 = ‘‘
NUMPAD3 = ‘‘
NUMPAD4 = ‘‘
NUMPAD5 = ‘‘
NUMPAD6 = ‘‘
NUMPAD7 = ‘‘
NUMPAD8 = ‘‘
NUMPAD9 = ‘‘
MULTIPLY = ‘‘ # ‘*‘ 键
ADD = ‘‘ # ‘+‘ 键
SEPARATOR = ‘‘ #‘,‘键
SUBTRACT = ‘‘ # ‘-‘ 键
DECIMAL = ‘‘ # ‘.‘键
DIVIDE = ‘‘ #‘/‘键
F1 = ‘‘ # function keys
F2 = ‘‘
F3 = ‘‘
F4 = ‘‘
F5 = ‘‘
F6 = ‘‘
F7 = ‘‘
F8 = ‘‘
F9 = ‘‘
F10 = ‘‘
F11 = ‘‘
F12 = ‘‘
META = ‘‘
COMMAND = ‘‘
View Code
NULL = ‘‘
CANCEL = ‘‘ # ^break
HELP = ‘‘
BACKSPACE = ‘‘
BACK_SPACE = BACKSPACE #删除键
TAB = ‘‘ #TAB键
CLEAR = ‘‘
RETURN = ‘‘
ENTER = ‘‘ #回车键
SHIFT = ‘‘ #Shift键
LEFT_SHIFT = SHIFT
CONTROL = ‘‘
LEFT_CONTROL = CONTROL #Ctrl 键
ALT = ‘‘ #Alt 键
LEFT_ALT = ALT
PAUSE = ‘‘
ESCAPE = ‘‘ #ECS键
SPACE = ‘‘ #空格键
PAGE_UP = ‘‘ #PgUp 键
PAGE_DOWN = ‘‘ #PgDwon 键
END = ‘‘ #END 键
HOME = ‘‘ #HOME 键
LEFT = ‘‘ #左键
ARROW_LEFT = LEFT
UP = ‘‘ #上键
ARROW_UP = UP
RIGHT = ‘‘
ARROW_RIGHT = RIGHT #右键
DOWN = ‘‘ #下键
ARROW_DOWN = DOWN
INSERT = ‘‘ #insert键
DELETE = ‘‘ #del键
SEMICOLON = ‘‘ #‘;‘键
EQUALS = ‘‘ #‘=‘键
#数字键盘
NUMPAD0 = ‘‘ #number pad keys
NUMPAD1 = ‘‘
NUMPAD2 = ‘‘
NUMPAD3 = ‘‘
NUMPAD4 = ‘‘
NUMPAD5 = ‘‘
NUMPAD6 = ‘‘
NUMPAD7 = ‘‘
NUMPAD8 = ‘‘
NUMPAD9 = ‘‘
MULTIPLY = ‘‘ # ‘*‘ 键
ADD = ‘‘ # ‘+‘ 键
SEPARATOR = ‘‘ #‘,‘键
SUBTRACT = ‘‘ # ‘-‘ 键
DECIMAL = ‘‘ # ‘.‘键
DIVIDE = ‘‘ #‘/‘键
F1 = ‘‘ # function keys
F2 = ‘‘
F3 = ‘‘
F4 = ‘‘
F5 = ‘‘
F6 = ‘‘
F7 = ‘‘
F8 = ‘‘
F9 = ‘‘
F10 = ‘‘
F11 = ‘‘
F12 = ‘‘
META = ‘‘
COMMAND = ‘‘
from selenium import webdriver
import unittest, time
from selenium.webdriver.common.keys import Keys
class Test_dragpage(unittest.TestCase):
def test_dragpageElement(self):
url = ‘http://www.sogou.com‘
self.driver = webdriver.Chrome()
self.driver.get(url)
self.driver.maximize_window()
query = self.driver.find_element_by_id(‘query‘)
# 通过WebDriver发送一个f12键
query.send_keys(Keys.F12)
time.sleep(5)
# 在按次f12
query.send_keys(Keys.F12)
query.send_keys(‘selenium‘)
# 按回车
query.send_keys(Keys.ENTER)
time.sleep(3)
test1 = Test_dragpage()
test1.test_dragpageElement()
from selenium import webdriver
import unittest, time
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
class Test_dragpage(unittest.TestCase):
def test_dragpageElement(self):
url = ‘http://www.baidu.com‘
self.driver = webdriver.Chrome()
self.driver.get(url)
input = self.driver.find_element_by_id(‘kw‘)
input.send_keys(‘python‘)
ActionChains(self.driver).key_down(Keys.CONTROL).send_keys(‘a‘).key_up(Keys.CONTROL).perform()
time.sleep(2)
ActionChains(self.driver).key_down(Keys.CONTROL).send_keys(‘x‘).key_up(Keys.CONTROL).perform()
self.driver.get(url)
self.driver.find_element_by_id(‘kw‘).click()
ActionChains(self.driver).key_down(Keys.CONTROL).send_keys(‘v‘).key_up(Keys.CONTROL).perform()
self.driver.find_element_by_id(‘su‘).click()
test1 = Test_dragpage()
test1.test_dragpageElement()
VK_CODE = {‘backspace‘:0x08,
‘tab‘:0x09,
‘clear‘:0x0C,
‘enter‘:0x0D,
‘shift‘:0x10,
‘ctrl‘:0x11,
‘alt‘:0x12,
‘pause‘:0x13,
‘caps_lock‘:0x14,
‘esc‘:0x1B,
‘spacebar‘:0x20,
‘page_up‘:0x21,
‘page_down‘:0x22,
‘end‘:0x23,
‘home‘:0x24,
‘left_arrow‘:0x25,
‘up_arrow‘:0x26,
‘right_arrow‘:0x27,
‘down_arrow‘:0x28,
‘select‘:0x29,
‘print‘:0x2A,
‘execute‘:0x2B,
‘print_screen‘:0x2C,
‘ins‘:0x2D,
‘del‘:0x2E,
‘help‘:0x2F,
‘0‘:0x30,
‘1‘:0x31,
‘2‘:0x32,
‘3‘:0x33,
‘4‘:0x34,
‘5‘:0x35,
‘6‘:0x36,
‘7‘:0x37,
‘8‘:0x38,
‘9‘:0x39,
‘a‘:0x41,
‘b‘:0x42,
‘c‘:0x43,
‘d‘:0x44,
‘e‘:0x45,
‘f‘:0x46,
‘g‘:0x47,
‘h‘:0x48,
‘i‘:0x49,
‘j‘:0x4A,
‘k‘:0x4B,
‘l‘:0x4C,
‘m‘:0x4D,
‘n‘:0x4E,
‘o‘:0x4F,
‘p‘:0x50,
‘q‘:0x51,
‘r‘:0x52,
‘s‘:0x53,
‘t‘:0x54,
‘u‘:0x55,
‘v‘:0x56,
‘w‘:0x57,
‘x‘:0x58,
‘y‘:0x59,
‘z‘:0x5A,
‘numpad_0‘:0x60,
‘numpad_1‘:0x61,
‘numpad_2‘:0x62,
‘numpad_3‘:0x63,
‘numpad_4‘:0x64,
‘numpad_5‘:0x65,
‘numpad_6‘:0x66,
‘numpad_7‘:0x67,
‘numpad_8‘:0x68,
‘numpad_9‘:0x69,
‘multiply_key‘:0x6A,
‘add_key‘:0x6B,
‘separator_key‘:0x6C,
‘subtract_key‘:0x6D,
‘decimal_key‘:0x6E,
‘divide_key‘:0x6F,
‘F1‘:0x70,
‘F2‘:0x71,
‘F3‘:0x72,
‘F4‘:0x73,
‘F5‘:0x74,
‘F6‘:0x75,
‘F7‘:0x76,
‘F8‘:0x77,
‘F9‘:0x78,
‘F10‘:0x79,
‘F11‘:0x7A,
‘F12‘:0x7B,
‘F13‘:0x7C,
‘F14‘:0x7D,
‘F15‘:0x7E,
‘F16‘:0x7F,
‘F17‘:0x80,
‘F18‘:0x81,
‘F19‘:0x82,
‘F20‘:0x83,
‘F21‘:0x84,
‘F22‘:0x85,
‘F23‘:0x86,
‘F24‘:0x87,
‘num_lock‘:0x90,
‘scroll_lock‘:0x91,
‘left_shift‘:0xA0,
‘right_shift ‘:0xA1,
‘left_control‘:0xA2,
‘right_control‘:0xA3,
‘left_menu‘:0xA4,
‘right_menu‘:0xA5,
‘browser_back‘:0xA6,
‘browser_forward‘:0xA7,
‘browser_refresh‘:0xA8,
‘browser_stop‘:0xA9,
‘browser_search‘:0xAA,
‘browser_favorites‘:0xAB,
‘browser_start_and_home‘:0xAC,
‘volume_mute‘:0xAD,
‘volume_Down‘:0xAE,
‘volume_up‘:0xAF,
‘next_track‘:0xB0,
‘previous_track‘:0xB1,
‘stop_media‘:0xB2,
‘play/pause_media‘:0xB3,
‘start_mail‘:0xB4,
‘select_media‘:0xB5,
‘start_application_1‘:0xB6,
‘start_application_2‘:0xB7,
‘attn_key‘:0xF6,
‘crsel_key‘:0xF7,
‘exsel_key‘:0xF8,
‘play_key‘:0xFA,
‘zoom_key‘:0xFB,
‘clear_key‘:0xFE,
‘+‘:0xBB,
‘,‘:0xBC,
‘-‘:0xBD,
‘.‘:0xBE,
‘/‘:0xBF,
‘`‘:0xC0,
‘;‘:0xBA,
‘[‘:0xDB,
‘\‘:0xDC,
‘]‘:0xDD,
"‘":0xDE,
‘`‘:0xC0}
View Code
VK_CODE = {‘backspace‘:0x08,
‘tab‘:0x09,
‘clear‘:0x0C,
‘enter‘:0x0D,
‘shift‘:0x10,
‘ctrl‘:0x11,
‘alt‘:0x12,
‘pause‘:0x13,
‘caps_lock‘:0x14,
‘esc‘:0x1B,
‘spacebar‘:0x20,
‘page_up‘:0x21,
‘page_down‘:0x22,
‘end‘:0x23,
‘home‘:0x24,
‘left_arrow‘:0x25,
‘up_arrow‘:0x26,
‘right_arrow‘:0x27,
‘down_arrow‘:0x28,
‘select‘:0x29,
‘print‘:0x2A,
‘execute‘:0x2B,
‘print_screen‘:0x2C,
‘ins‘:0x2D,
‘del‘:0x2E,
‘help‘:0x2F,
‘0‘:0x30,
‘1‘:0x31,
‘2‘:0x32,
‘3‘:0x33,
‘4‘:0x34,
‘5‘:0x35,
‘6‘:0x36,
‘7‘:0x37,
‘8‘:0x38,
‘9‘:0x39,
‘a‘:0x41,
‘b‘:0x42,
‘c‘:0x43,
‘d‘:0x44,
‘e‘:0x45,
‘f‘:0x46,
‘g‘:0x47,
‘h‘:0x48,
‘i‘:0x49,
‘j‘:0x4A,
‘k‘:0x4B,
‘l‘:0x4C,
‘m‘:0x4D,
‘n‘:0x4E,
‘o‘:0x4F,
‘p‘:0x50,
‘q‘:0x51,
‘r‘:0x52,
‘s‘:0x53,
‘t‘:0x54,
‘u‘:0x55,
‘v‘:0x56,
‘w‘:0x57,
‘x‘:0x58,
‘y‘:0x59,
‘z‘:0x5A,
‘numpad_0‘:0x60,
‘numpad_1‘:0x61,
‘numpad_2‘:0x62,
‘numpad_3‘:0x63,
‘numpad_4‘:0x64,
‘numpad_5‘:0x65,
‘numpad_6‘:0x66,
‘numpad_7‘:0x67,
‘numpad_8‘:0x68,
‘numpad_9‘:0x69,
‘multiply_key‘:0x6A,
‘add_key‘:0x6B,
‘separator_key‘:0x6C,
‘subtract_key‘:0x6D,
‘decimal_key‘:0x6E,
‘divide_key‘:0x6F,
‘F1‘:0x70,
‘F2‘:0x71,
‘F3‘:0x72,
‘F4‘:0x73,
‘F5‘:0x74,
‘F6‘:0x75,
‘F7‘:0x76,
‘F8‘:0x77,
‘F9‘:0x78,
‘F10‘:0x79,
‘F11‘:0x7A,
‘F12‘:0x7B,
‘F13‘:0x7C,
‘F14‘:0x7D,
‘F15‘:0x7E,
‘F16‘:0x7F,
‘F17‘:0x80,
‘F18‘:0x81,
‘F19‘:0x82,
‘F20‘:0x83,
‘F21‘:0x84,
‘F22‘:0x85,
‘F23‘:0x86,
‘F24‘:0x87,
‘num_lock‘:0x90,
‘scroll_lock‘:0x91,
‘left_shift‘:0xA0,
‘right_shift ‘:0xA1,
‘left_control‘:0xA2,
‘right_control‘:0xA3,
‘left_menu‘:0xA4,
‘right_menu‘:0xA5,
‘browser_back‘:0xA6,
‘browser_forward‘:0xA7,
‘browser_refresh‘:0xA8,
‘browser_stop‘:0xA9,
‘browser_search‘:0xAA,
‘browser_favorites‘:0xAB,
‘browser_start_and_home‘:0xAC,
‘volume_mute‘:0xAD,
‘volume_Down‘:0xAE,
‘volume_up‘:0xAF,
‘next_track‘:0xB0,
‘previous_track‘:0xB1,
‘stop_media‘:0xB2,
‘play/pause_media‘:0xB3,
‘start_mail‘:0xB4,
‘select_media‘:0xB5,
‘start_application_1‘:0xB6,
‘start_application_2‘:0xB7,
‘attn_key‘:0xF6,
‘crsel_key‘:0xF7,
‘exsel_key‘:0xF8,
‘play_key‘:0xFA,
‘zoom_key‘:0xFB,
‘clear_key‘:0xFE,
‘+‘:0xBB,
‘,‘:0xBC,
‘-‘:0xBD,
‘.‘:0xBE,
‘/‘:0xBF,
‘`‘:0xC0,
‘;‘:0xBA,
‘[‘:0xDB,
‘\‘:0xDC,
‘]‘:0xDD,
"‘":0xDE,
‘`‘:0xC0}
import win32api
import win32con
class KeyboardKeys(object):
#模拟键盘按键类
VK_CODE={
‘enter‘:0x0D,
‘ctrl‘:0x11,
‘v‘:0x56
}
@staticmethod
def keyDown(keyName):
#按下按键
win32api.keybd_event(KeyboardKeys.VK_CODE[keyName],0,0,0)
@staticmethod
def keyUp(keyName):
#释放按键
win32api.keybd_event(KeyboardKeys.VK_CODE[keyName],0,win32con.KEYEVENTF_KEYUP,0)
@staticmethod
def oneKey(key):
#模拟单个按键
KeyboardKeys.keyDown(key)
KeyboardKeys.keyUp(key)
@staticmethod
def twoKeys(key1,key2):
#模拟两个组合键
KeyboardKeys.keyDown(key1)
KeyboardKeys.keyDown(key2)
KeyboardKeys.keyUp(key2)
KeyboardKeys.keyUp(key1)
KeyboardKeys.oneKey(‘enter‘)
import win32clipboard as w
import win32con
class Clipboard(object):
#模拟windows设置剪贴板
#读取剪贴板
@staticmethod
def getText():
#打开剪贴板
w.OpenClipboard()
#获取剪贴板中的数据
d=w.GetClipboardData(win32con.CF_TEXT)
#关闭剪贴板
w.CloseClipboard()
#返回剪贴板数据给调用者
return d
#设置剪贴板内容
@staticmethod
def setText(aString):
#打开剪贴板
w.OpenClipboard()
#清空剪贴板
w.EmptyClipboard()
#将数据aString写入剪贴板
w.SetClipboardData(win32con.CF_UNICODETEXT,aString)
#关闭剪贴板
w.CloseClipboard()
Clipboard.setText(filePath)