用python实现鼠标键盘自动化操作

  • 前言
  • 一、pyautogui是什么?
  • 二、功能简介
  • 1.引入库
  • 2.坐标相关参数
  • 3.移动鼠标
  • 4.点击鼠标
  • 5.拖动鼠标
  • 6.输入文本
  • 7.其他
  • 总结



前言

  爱玩,忽然想到万能的python能不能实现鼠标的自动化点击来帮忙实现一些繁琐的工作或者是实现一些有趣的功能,比如一个复杂操作但是它是固定的,我们只需要运行这个程序就可以自动执行了!


一、pyautogui是什么?

我们今天的主人公是pyautogui,pyautogui 是一个纯 Python 的 GUI 自动化工具,通过它可以让程序自动控制鼠标和键盘的一系列操作来达到自动化测试的目的。
还是老方法下载pycharm用自己的编辑器那下载,不用pycharm就直接打开命令行从清华源下载

pip install pyautogui -i https://pypi.tuna.tsinghua.edu.cn/simple

二、功能简介

1.引入库

代码如下(示例):

import pyautogui

2.坐标相关参数

由于鼠标的操作与坐标息息相关,所以我们需要知道某一点的坐标

# 打印当前鼠标位置
print(pyautogui.position())
# 获取当前屏幕的分辨率(宽度和高度)
print(pyautogui.size())

当然你也可以用下面移动鼠标的方法测试大概多少是在哪个位置然后不断观察微调参数,我在晚上还查到另一种方法不太准这里就不多讲了,有兴趣可以自己去查一下。

3.移动鼠标

代码如下(示例):

# 移动鼠标
pyautogui.moveTo(200,400,duration=2) # 移到(200,400)
pyautogui.moveRel(200,500,duration=2) # 移到以该点为原点的(200,500)

整个桌面是以左上角为坐标轴的原点,所有的操作都以这个原点,来确定操作位置。
第一行是将鼠标移动到指定的像素(200,400)位置,第二行代码是将鼠标按照当前点向右移动200px,向下移动400px这个方向移动。
duration就是移动的持续时间


4.点击鼠标

代码如下(示例):

# 模板如下clicks点击次数,interval点击间隔,button左右中,duration持续时间
pyautogui.click(x=None, y=None, clicks=1, interval=0.0, button='left', duration=0.0)
# 鼠标点击,默认左键
 pyautogui.click(x,y)
# 单击左键
 pyautogui.click(x,y,button='left')
# 单击右键
pyautogui.click(x,y,button='right')
# 单击中间
pyautogui.click(x,y,button='middle')
# 双击左键
pyautogui.doubleClick(x,y)
# 双击右键
pyautogui.rightClick(x,y)
# 双击中键
pyautogui.middleClick(x,y)
# 模拟鼠标按下
pyautogui.mouseDown()   
# 模拟鼠标释放
pyautogui.mouseUp()

当然你想要用两次click()来代替双击也行


5.拖动鼠标

代码如下(示例):

pyautogui.dragTo(100,300,duration=1) 
pyautogui.dragRel(100,300,duration=1)

这个大家就参照3.移动鼠标理解就行,这个似乎用得比较少


6.输入文本

其实pyautogui并没有输入文本的功能,所以它只是模拟键盘按下的功能,所以你需要确保你的输入法正确

# 模板如下interval为间隔时长
pyautogui.typewrite(message, interval=num_seconds)
text_to_type = "Hello, World!"
pyautogui.typewrite(text_to_type)
# 或者
pyautogui.typewrite(['p','y','t','h','o','n','enter']) 
# 上面代码中文输入法时会在输入法中输入“python”的然后直接换行,英文输入法就会输入python后换行
pyautogui.typewrite(['n','i','h','a','o','space'])

英语没问题,你只需要保证英文输入法就行
注意type的每一个字符都要和键盘上的相对应,不然相当于跳过比如pyautogui.typewrite(['nihao','space']) 就只会输入一个空格,因为找不到nihao这个键

于是你就会发现一个很坏的事情,就是输入不了中文,除非你提前知道他在输入法的第几个数,这个显然是十分困难的。这边我们需要利用另一个库函数pyperclip,这个应该是自带的,至少我pycharm不需要自己下载,如果显示没有就依葫芦画瓢按上面步骤改一个名字下载即可。
代码如下,还是很好理解的。

# 以下读入内容,就是把内容存入剪贴板。
import pyperclip
pyperclip.copy('需要输入的汉字')
# 以下输出内容,就是粘贴。就是同时按ctrl和v
pyautogui.hotkey('ctrl','v')

7.其他

其他功能

# 鼠标滚动
pyautogui.scroll(30000)   
#模拟按键按下
pyautogui.keyDown()
#模拟按键松开
pyautogui.keyUP()
#模拟一次按键过程,即 keyDown 和 keyUP 的组合
pyautogui.press()

比如你要输一个#

pyautogui.keyDown('shift')    
pyautogui.press('3')    
pyautogui.keyUp('shift')

这样就得到一个#
还有一个是信息框的功能比较鸡肋这里就不多赘述了


总结

pyautogui的基本知识就给大家介绍到这里,这个 python 模块的功能十分强大,函数都非常简单,对 python 初学者比较友好。学了这些基本知识之后,你可以运用这些基本知识的组合,去实现一些有趣的桌面自动化操作,快去尝试一把吧!

北大青鸟志远科技------Python自动操作 GUI 神器——PyAutoGUI