一、键盘操作
1.调试示例:键盘码调试
print(dir(Key))
['ADD',
'ALT',
'ALTGR',
'BACKSPACE',
'CAPS_LOCK',
'CMD',
'CONTEXT',
'CTRL',
'C_ADD',
'C_ALT',
'C_ALTGR',
'C_CAPS_LOCK',
'C_CMD',
'C_CONTEXT',
'C_CTRL',
'C_DECIMAL',
'C_DELETE',
'C_DIVIDE',
'C_DOWN',
'C_END',
'C_ESC',
'C_F1',
'C_F10',
'C_F11',
'C_F12',
'C_F13',
'C_F14',
'C_F15',
'C_F2',
'C_F3',
'C_F4',
'C_F5',
'C_F6',
'C_F7',
'C_F8',
'C_F9',
'C_HOME',
'C_INSERT',
'C_LEFT',
'C_META',
'C_MINUS',
'C_MULTIPLY',
'C_NEXT',
'C_NUM0',
'C_NUM1',
'C_NUM2',
'C_NUM3',
'C_NUM4',
'C_NUM5',
'C_NUM6',
'C_NUM7',
'C_NUM8',
'C_NUM9',
'C_NUM_LOCK',
'C_PAGE_DOWN',
'C_PAGE_UP',
'C_PAUSE',
'C_PRINTSCREEN',
'C_RIGHT',
'C_SCROLL_LOCK',
'C_SEPARATOR',
'C_SHIFT',
'C_UP',
'C_WIN',
'DECIMAL',
'DELETE',
'DIVIDE',
'DOWN',
'END',
'ENTER',
'ESC',
'F1',
'F10',
'F11',
'F12',
'F13',
'F14',
'F15',
'F2',
'F3',
'F4',
'F5',
'F6',
'F7',
'F8',
'F9',
'HOME',
'INSERT',
'LEFT',
'META',
'MINUS',
'MULTIPLY',
'NEXT',
'NUM0',
'NUM1',
'NUM2',
'NUM3',
'NUM4',
'NUM5',
'NUM6',
'NUM7',
'NUM8',
'NUM9',
'NUM_LOCK',
'PAGE_DOWN',
'PAGE_UP',
'PAUSE',
'PRINTSCREEN',
'RIGHT',
'SCROLL_LOCK',
'SEPARATOR',
'SHIFT',
'SPACE',
'TAB',
'UP',
'WIN',
'__class__',
'__copy__',
'__deepcopy__',
'__delattr__',
'__dict__',
'__doc__',
'__ensure_finalizer__',
'__eq__',
'__format__',
'__getattribute__',
'__hash__',
'__initProxy__',
'__init__',
'__module__',
'__ne__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__setattr__',
'__str__',
'__subclasshook__',
'__supernames__',
'__unicode__',
'__weakref__',
'_getPyInstance',
'_getPySystemState',
'_setPyInstance',
'_setPySystemState',
'addHotkey',
'cMax',
'cMin',
'class',
'classDictInit',
'clone',
'convertKeyToText',
'createKeyTable',
'dump',
'equals',
'finalize',
'getClass',
'getHotkeyModifier',
'getTextFromKeycode',
'hashCode',
'isLockOn',
'isModifier',
'isRepeatable',
'keyMaxLength',
'keyboardUS',
'notify',
'notifyAll',
'removeHotkey',
'toJavaKeyCode',
'toJavaKeyCodeFromText',
'toJavaKeyCodeText',
'toString',
'wait'
]
2.控制字符
| 键名 |
sikuliX中的命令 |
| Shift |
type(Key.SHIFT) |
| Ctrl |
type(Key.CTRL) |
| Alt键 |
type(Key.ALT) |
| Tab(制表符) |
type(Key.TAB) |
| 大写锁定 |
type(Key.CAPSLOCK) |
| 输入 |
type(Key.ENTER) |
| 删除 |
type(Key.DELETE) |
| 退格键 |
type(Key.BACKSPACE) |
| 插入 |
type(Key.INSERT) |
| Home |
type(Key.HOME) |
| End |
type(Key.END) |
| ESC |
type(Key.ESC) |
| 空格 |
type(Key.SPACE) |
| 视窗 |
type(Key.WIN) |
| 换页 |
type(Key.PAGE_UP) |
| 向下翻页 |
type(Key.PAGE_DOWN) |
| 列印画面 |
type(Key.PRINTSCREEN) |
| 数字键盘锁 |
type(Key.NUM_LOCK) |
| 滚动锁 |
type(Key.SCROLL_LOCK) |
| F1 |
type(Key.F1) |
| F2 |
type(Key.F2) |
| F3 |
type(Key.F3) |
| F4 |
type(Key.F4) |
| F5 |
type(Key.F5) |
| F6 |
type(Key.F6) |
| F7 |
type(Key.F7) |
| F8 |
type(Key.F8) |
| F9 |
type(Key.F9) |
| F10 |
type(Key.F10) |
| F11 |
type(Key.F11) |
| F12 |
type(Key.F12) |
| 光标键:向上 |
type(Key.UP) |
| 光标键:向下 |
type(Key.DOWN) |
| 光标键:左 |
type(Key.LEFT) |
| 光标键:向右 |
type(Key.RIGHT) |
| 向上移动光标两次 |
type(Key.UP * 2) |
| 向下移动光标两次 |
type(Key.DOWN * 2) |
| 向左移动光标两次 |
type(Key.LEFT * 2) |
| 向右移动光标两次 |
type(Key.RIGTH * 2) |
| 按特定键 |
KeyDown(Key.*) 需要使用Region()进行区域设置。 |
| 释放特定键 |
KeyUp(Key.*) 需要使用Region()设置区域。 |
3.快捷键
| 常见操作 |
快捷键 |
sikuliX中的命令 |
| 复制 |
Ctrl + C |
type("c" , Key.CTRL) |
| 剪下 |
Ctrl + X |
type("x" , Key.CTRL) |
| 贴上 |
Ctrl + V |
type("v" , Key.CTRL) |
| 搜索 |
Ctrl + F |
type("f" , Key.CTRL) |
| 打印 |
Ctrl + P |
type("p" , Key.CTRL) |
| 撤消 |
Ctrl + Z |
type("z" , Key.CTRL) |
| 重做 |
Ctrl + Y Ctrl + Shift + Z |
type("y" , Key.CTRL); type("z" , Key.CTRL + Key.SHIFT) |
| 关闭标签 |
Ctrl + F4 |
type(Key.F4 , Key.CTRL) |
| 还原标签 |
Ctrl + Shift + T |
type("t" , Key.CTRL + Key.SHIFT) |
| 浏览器缓存刷新(强制刷新) |
Ctrl + F5 |
type(Key.F5 , Key.CTRL) |
| 关闭窗口 |
Alt + F4 |
type(Key.F4 , Key.ALT) |
| 最小化所有窗口 |
Windows + M |
type("m" , Key.WIN) |
| 显示桌面 |
Windows + D |
type("d" , Key.WIN) |
| 最小化窗口(当窗口为正常大小时)恢复为原始大小(当窗口为最大化时) |
Windows + 光标键:向下,如果最大化,请执行上述两次。 |
type(Key.DOWN , Key.WIN) |
| 窗口最大化 |
Windows +光标键:向上 |
type(Key.UP , Key.WIN) |
| 切换活动窗口 |
Windows + Tab; Windows + Shift + Tab |
type(Key.TAB , Key.WIN); type(Key.TAB , Key.WIN + Key.SHIFT) |
| 启动任务管理器 |
Ctrl + Shift + ESC |
type(Key.ESC , Key.CTRL + Key.SHIFT) |
| 启动资源管理器 |
Windows + e |
type("e" , Key.WIN) |
4.运算符
| 运算 |
sikuliX中运算符 |
| 加成 |
+ |
| 减法 |
– |
| 乘法 |
* |
| 除 |
/ |
| 余数计算 |
% |
| 除数的整数部分 |
// |
| A的b次方 |
A ** B |
| A的负数 |
-A |
| 逻辑或 |
or |
| 逻辑与 |
and |
| 否认 |
not |
| a大于b |
a > b |
| a小于b |
a < b |
| a小于或等于b |
a <= b |
| a大于或等于b |
a >= b |
| a等于b |
a == b |
| a不等于b |
a != b |
通过键盘操作提高了sikulix自动操作的稳定性;运用快捷键更是进一步减少sikulix命令行数;运算符不仅可以用于计算,还可以用于分支条件。综合以上知识,相信你能做一些有趣的RPA程序了,多多练习吧!
另外,如果type(各种按键)失灵了,还可以参照以下代码,用更底层的方式实现同样的功能。
# 方法1启动资源管理器
type("e",Key.WIN)
# 方法2启动资源管理器
# 用底层函数实现按下win键
keyDown(Key.WIN)
wait(0.2)
type("e")
keyUp()
# 方法1还原窗口尺寸
# 先点击要还原的窗口,再执行!
click(Location(1043, 32))
type(Key.DOWN,Key.WIN)
# 方法2还原窗口尺寸
click(Location(1043, 32))
wait(1)
keyDown(Key.WIN)
wait(0.2)
type(Key.DOWN)
wait(0.2)
keyUp()