• python+pyautogui—PC端自动化(二)键盘鼠标及对话框操作


    目录

    鼠标操作

    获取鼠标所在位置坐标

    获取鼠标所在位置的RGB值

    鼠标点击

    鼠标按下和释放

    鼠标移动

    鼠标拖拽

    滚轮滚动

    键盘操作

    输入英文字符

    普通按键操作press

    按下与抬起

    组合键hotkey

    持续按键hold

    弹出对话框

    alert

    confirm

    prompt

    password


    鼠标操作

    获取鼠标所在位置坐标

    1. x, y = pyautogui.position() # 获取鼠标当前位置坐标
    2. print(x, y)

    获取鼠标所在位置的RGB值

    1. print(pyautogui.screenshot().getpixel((1434, 488))) # 获取鼠标当前位置坐标的的屏幕RGB颜色值
    2. print(pyautogui.pixel(1434, 488)) # 同.screenshot().getpixel((x, y))

    鼠标点击

    1. pyautogui.leftClick(1864, 43) # 单击
    2. pyautogui.rightClick(1864, 43) # 右击
    3. pyautogui.doubleClick(1864, 43) # 双击
    4. pyautogui.tripleClick(1864, 43) # 三次单击
    5. pyautogui.middleClick(1864, 43) # 中间键点击

    pyautogui.click(x=moveToX, y=moveToY, clicks=num_of_clicks, interval=secs_between_clicks, button='left'),clicks点击次数;interval每次点击的间隔时长;x,y为空默认选择当前位置的坐标

    1. pyautogui.click() # 鼠标当前位置点击一下
    2. pyautogui.click(1864, 43, 2, 1, button='left')

    鼠标按下和释放

    1. # 鼠标按下与释放,模拟拖拽鼠标
    2. pyautogui.mouseDown(1864, 43, button='left') # 鼠标左键按下
    3. pyautogui.moveTo(1500, 200)
    4. pyautogui.mouseUp() # 抬起鼠标按键,添加坐标会拖动鼠标到某个位置后释放

    鼠标移动

    参数:duration为持续时间

    moveTo :移动到某个位置,原点为电脑屏幕左上角(相对真个屏幕而言),

    1. for i in range(1, 5):
    2. print(i * 100, i * 100)
    3. pyautogui.moveTo(i * 100, i * 100, duration=.2) # 移动到某个位置,原点为电脑屏幕左上角(相对真个屏幕而言)

    moveRel(move) :从当前位置移动为原点(原点为当前位置),移动到某个偏移向量(相对当前位置而言),可控制上下左右的移动

    1. for i in range(1, 5):
    2. print(i * 100, i * 100)
    3. pyautogui.moveRel(i * 100, i * 100, duration=.2) # 从当前位置移动为原点(原点为当前位置),移动到某个偏移向量(相对当前位置而言),可控制上下左右的移动
    4. pyautogui.move(500, 500, .5) # 同moveRel

    缓动/渐变函数可改变光标移动过程的速度和方向。通常鼠标是匀速直线运动,这就是线性缓动/渐变函数。PyAutoGUI有30种缓动/渐变函数,可以通过pyautogui.ease...查看

    1. pyautogui.moveTo(100, 100, 2, pyautogui.easeInQuad) # 由慢到快,不断加速
    2. pyautogui.moveTo(100, 100, 2, pyautogui.easeOutQuad) # 又快到慢,不断减速
    3. pyautogui.moveTo(100, 100, 2, pyautogui.easeInOutQuad) # 开始和结束都快,中间比较慢
    4. pyautogui.moveTo(100, 100, 2, pyautogui.easeInBounce) # 一步一徘徊前进
    5. pyautogui.moveTo(100, 100, 2, pyautogui.easeInElastic) # 徘徊幅度更大,甚至超过起点和终点

    鼠标拖拽

    1. pyautogui.dragTo(1867, 125,duration=.2, button='left') # 按住鼠标左键,将鼠标拖拽到某个位置(相对于屏幕而言)
    2. pyautogui.dragRel(0, 100, duration=0.5) # 按住鼠标左键,将鼠标拖拽到某个位置(相对当前位置而言)
    3. pyautogui.drag(-300, 100, .5, button='left') # 同dragRel

    滚轮滚动

    1. # pyautogui.hscroll(500) # 滚轮水平滚动
    2. # pyautogui.vscroll(500) # 滚轮垂直滚动
    3. # pyautogui.scroll(clicks=amount_to_scroll, x=moveToX, y=moveToY) # amount_to_scroll参数表示滚动的格数,正数则页面向上滚动,负数则向下滚动
    4. for _ in range(10):
    5. time.sleep(.2)
    6. pyautogui.scroll(100)

    键盘操作

    键盘操作,pyautogui.KEYBOARD_KEYS数组中press(),keyDown(),keyUp()和hotkey()函数可以输入的按键名称:

    1. pyautogui.KEYBOARD_KEYS = ['\t', '\n', '\r', ' ', '!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', ',', '-', '.',
    2. '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', '@',
    3. '[', '\\', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
    4. 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~',
    5. 'accept', 'add', 'alt', 'altleft', 'altright', 'apps', 'backspace', 'browserback',
    6. 'browserfavorites', 'browserforward', 'browserhome', 'browserrefresh', 'browsersearch',
    7. 'browserstop', 'capslock', 'clear', 'convert', 'ctrl', 'ctrlleft', 'ctrlright', 'decimal',
    8. 'del', 'delete', 'divide', 'down', 'end', 'enter', 'esc', 'escape', 'execute', 'f1', 'f10',
    9. 'f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18', 'f19', 'f2', 'f20', 'f21', 'f22',
    10. 'f23', 'f24', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'final', 'fn', 'hanguel', 'hangul',
    11. 'hanja', 'help', 'home', 'insert', 'junja', 'kana', 'kanji', 'launchapp1', 'launchapp2',
    12. 'launchmail', 'launchmediaselect', 'left', 'modechange', 'multiply', 'nexttrack',
    13. 'nonconvert', 'num0', 'num1', 'num2', 'num3', 'num4', 'num5', 'num6', 'num7', 'num8', 'num9',
    14. 'numlock', 'pagedown', 'pageup', 'pause', 'pgdn', 'pgup', 'playpause', 'prevtrack', 'print',
    15. 'printscreen', 'prntscrn', 'prtsc', 'prtscr', 'return', 'right', 'scrolllock', 'select',
    16. 'separator', 'shift', 'shiftleft', 'shiftright', 'sleep', 'space', 'stop', 'subtract', 'tab',
    17. 'up', 'volumedown', 'volumemute', 'volumeup', 'win', 'winleft', 'winright', 'yen', 'command',
    18. 'option', 'optionleft', 'optionright']

    输入英文字符

    1. pyautogui.typewrite('test', interval=.25) # 输入字符串,interval参数为每次键盘输入的间隔时间,默认为0
    2. pyautogui.write('test', interval=.25) # 英文输入,同上

    普通按键操作press

    1. pyautogui.press('enter') # 点击回车键
    2. pyautogui.press(['left', 'down', 'right', 'up']) # 连续按键

    按下与抬起

    1. pyautogui.keyDown('win') # 按下win键
    2. pyautogui.press('r')
    3. pyautogui.keyUp('win') # 松开win键

    组合键hotkey

    pyautogui.hotkey('win', 'e')

    持续按键hold

    1. with pyautogui.hold('win'):
    2. # 先按住win,再按三次其他按键,再释放win
    3. for i in ['e', 'i', 'r']:
    4. time.sleep(2)
    5. pyautogui.press(i)

    弹出对话框

    alert

    一个简单的带文字和OK按钮的消息弹窗,用户点击后返回button的文字

    1. a = pyautogui.alert(text='确认要删除此文件吗?', title='删除文件', button='确定')
    2. print(a)

      

    confirm

    显示一个简单的带文字、OK和Cancel按钮的消息弹窗,用户点击后返回被点击button的文字,支持自定义数字、文字的列表

    1. # b = pyautogui.confirm(text='请选择一个数字', title='', buttons=range(10))
    2. # print(b)
    3. pyautogui.confirm(text='是否进行下一步?', title='', buttons=['下一步', '退出'])

      

    prompt

    可以输入的消息弹窗,带OK和Cancel按钮,用户点击OK按钮返回输入的文字,点击Cancel按钮返回None

    1. c = pyautogui.prompt(text='输入要提交的内容:', title='', default='')
    2. print(c)

      

    password

    样式同prompt(),用于输入密码,消息用*表示。带OK和Cancel按钮。用户点击OK按钮返回输入的文字,点击Cancel按钮返回None

    pyautogui.password(text='请输入密码:', title='', default='', mask='*')
  • 相关阅读:
    java 特点了解及 JDK 初谈(程序员必看!)
    【LeetCode】No.102. Binary Tree Level Order Traversal -- Java Version
    Redis面试题(总结最全面的面试题)
    交换机端口镜像详解
    【重识云原生】第六章容器6.1.10节——DockerFile解析
    Linux账户组管理及权限练习
    Excel中将单元格格式改成文本后,为何要双击数字才会改变?
    c++11 入门基础
    机器学习基础17-基于波士顿房价(Boston House Price)数据集训练模型的整个过程讲解
    注解与自定义注解
  • 原文地址:https://blog.csdn.net/JBY2020/article/details/128080730