模拟操作鼠标和键盘-PyAutoGUI

王 茂南 2020年2月29日07:22:28
评论
2891字阅读9分38秒
摘要这一篇介绍PyAutoGUI的使用, 他可以模拟键盘和鼠标的操作. 我们可以用它来完成一些自动化的操作和测试.

简介

之前我们介绍过一个Python的浏览器自动化测试框架, Python selenium介绍. 但是他只能对浏览器进行测试, 更加宽泛的操作, 例如可以操作键盘和鼠标, 进行一些模拟人类行为的操作, 这个时候就需要使用另外一个Python的库了, PyAutoGUI.

这一篇简单介绍一下PyAutoGUI的使用, 包括控制键盘, 控制鼠标, 和屏幕的截图.

参考资料

 

鼠标控制

首先说明一下, PyAutoGUI是只能控制一个屏幕的. 也就是说, 如果是双显示器, 那么鼠标只能在主显示器上进行移动.

我们可以通过下面的代码, 来查看屏幕中各个位置对应的坐标是什么.

  1. import pyautogui, sys
  2. print('Press Ctrl-C to quit.')
  3. try:
  4.     while True:
  5.         x, y = pyautogui.position()
  6.         positionStr = 'X: ' + str(x).rjust(4) + ' Y: ' + str(y).rjust(4)
  7.         print(positionStr, end='')
  8.         print('\b' * len(positionStr), end='', flush=True)
  9. except KeyboardInterrupt:
  10.     print('\n')

它可以显示显示器上每个位置对应的坐标是什么. 有了这个坐标, 就可以方便后面的点击操作.

模拟操作鼠标和键盘-PyAutoGUI

鼠标的移动

关于鼠标的移动, 使用moveTo来进行完成. 我们看一下下面的例子. 下面的代码表示鼠标在2秒内, 移动到(100,200)的位置.

  1. pyautogui.moveTo(100, 200, 2)   # moves mouse to X of 100, Y of 200 over 2 seconds

这里鼠标移动的速度是线性的, 也就是匀速移动. 我们可以对鼠标的移动速度进行改变. 详细的介绍看下面的例子.

  1. >>> pyautogui.moveTo(100, 100, 2, pyautogui.easeInQuad)     # start slow, end fast
  2. >>> pyautogui.moveTo(100, 100, 2, pyautogui.easeOutQuad)    # start fast, end slow
  3. >>> pyautogui.moveTo(100, 100, 2, pyautogui.easeInOutQuad)  # start and end fast, slow in middle
  4. >>> pyautogui.moveTo(100, 100, 2, pyautogui.easeInBounce)   # bounce at the end
  5. >>> pyautogui.moveTo(100, 100, 2, pyautogui.easeInElastic)  # rubber band at the end

 

鼠标的点击

在鼠标移动到某个位置之后, 我们需要进行点击的操作. 鼠标的点击通过click来完成. 下面是一个简单的例子.

  1. pyautogui.click()  # click the mouse

当然, 鼠标的点击时可以控制左键还是右键的, 可以直接通过button来进行指定. 也可以控制点击的次数和点击的间隔时间.

  1. >>> pyautogui.click(clicks=2)  # double-click the left mouse button
  2. >>> pyautogui.click(clicks=2, interval=0.25)  # double-click the left mouse button, but with a quarter second pause in between clicks
  3. >>> pyautogui.click(button='right', clicks=3, interval=0.25)  ## triple-click the right mouse button with a quarter second pause in between clicks

 

鼠标滚轮的操作

我们通过scroll来模拟鼠标的滚轮操作. 关于向上还是向下进行滚动, 是通过正负来进行改变的.

  1. >>> pyautogui.scroll(10)   # scroll up 10 "clicks"
  2. >>> pyautogui.scroll(-10)  # scroll down 10 "clicks"

 

 

键盘的操作

键盘的主要操作时write函数. 他可以键入各种字符串. 同时我们也是可以控制输入的时间.

  1. # prints out "Hello world!" with a quarter second delay after each character
  2. >> pyautogui.write('Hello world!', interval=0.25)

 

关于一些快捷键

有一些按键需要配合进行使用, 例如按住shift, 再按别的键. 这个时候就需要使用press, keydown和keyup了. 首先简单介绍一下这三个函数.

  • press: 按下某个键
  • keydown: 按住某个键
  • keyup: 松开某个键

例如下面的例子, 我们进行了简单的说明

  1. >>> pyautogui.keyDown('shift')  # hold down the shift key
  2. >>> pyautogui.press('left')     # press the left arrow key
  3. >>> pyautogui.press('left')     # press the left arrow key
  4. >>> pyautogui.press('left')     # press the left arrow key
  5. >>> pyautogui.keyUp('shift')    # release the shift key

若上面的操作觉得过于复杂, 我们可以直接使用hotkey函数. 例如下面的操作:

  1. >>> pyautogui.hotkey('ctrl', 'shift', 'esc')

他是等价于下面的6行代码的.

  1. >>> pyautogui.keyDown('ctrl')
  2. >>> pyautogui.keyDown('shift')
  3. >>> pyautogui.keyDown('esc')
  4. >>> pyautogui.keyUp('esc')
  5. >>> pyautogui.keyUp('shift')
  6. >>> pyautogui.keyUp('ctrl')

 

屏幕截图

关于屏幕截图, 可以直接使用screenshot函数来完成.

  1. im2 = pyautogui.screenshot('./my_screenshot.png')

 

  • 微信公众号
  • 关注微信公众号
  • weinxin
  • QQ群
  • 我们的QQ群号
  • weinxin
王 茂南
  • 本文由 发表于 2020年2月29日07:22:28
  • 转载请务必保留本文链接:https://mathpretty.com/12600.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: