龙空技术网

干货分享——利用Python实现电脑鼠标和键盘自动化

工号1024 943

前言:

如今各位老铁们对“python模拟键盘操作”可能比较注意,兄弟们都需要了解一些“python模拟键盘操作”的相关知识。那么小编也在网上汇集了一些关于“python模拟键盘操作””的相关文章,希望我们能喜欢,大家快快来学习一下吧!

利用Python实现电脑鼠标和键盘自动化

我们会使用Python模块PyAutoGUI来使我们的鼠标和键盘自动化。曾经看到许多与PyAutoGUI相关的文章,不过在这里我们可以尝试提供一些使用此模块的独特玩法。

安装步骤

Windows上:在该系统安装和使用PyAutoGUI非常容易。如果已安装pip,则可以用pip,从PyPI安装它。

pip install pyautogui

Os X上:需要安装一些额外的模块才能运行PyAutoGui。

pip3 install pyobjc-corepip3 install pyobjcpip3 install pyautogui

Linux上:同样的,也必须安装一些软件包。

pip3 install python3-xlibsudo apt-get install scrotsudo apt-get install python3-tksudo apt-get install python3-devpip3 install pyautogui

好的,开始吧,使用PyAutoGUI执行以下操作

(注:如果你想制作出更有逼格的自动化工具,则可以将后面的模块集成到Selenium、OpenCV等其它一些出色的模块中)

1)安全功能

安全-停顿

“停顿“是PyAutoGUI中的一个选项,用于设置每次模块调用之间的“停顿“时间,假设,我们有两个功能,一个是write操作,另一个是click操作,则经配置该选项,第二个功能在配置的“一个时间间隔”之后执行。

pyautogui.PAUSE = dur # 2.5

安全-故障安全

此选项的作用类似于使用CTRL + C取消程序,如果此选项设置成True,则pyautogui.FailSafeException通过将鼠标移至屏幕的左上角来中止程序并声明异常。

pyautogui.FAILSAFE = True

2)鼠标功能

鼠标-移动

我们可以使用pyautogui class的以下功能将鼠标移至屏幕的x,y坐标

鼠标移动

pyautogui.moveTo(x, y, duration=num_seconds)

其中x和y是屏幕上的XY坐标,x向右增加,y向向下增加;duration是以秒为单位的时间,该时间使鼠标的移动根据时间而变慢;还有另一个功能,它使鼠标相对于鼠标的当前位置移动,这简单地意味着它将从当前鼠标位置向左和向右移动鼠标(100,100)。

pyautogui.moveRel(xOffset, yOffset, duration=num_seconds)# 你也可以使用 pyautogui.move(xOffset, yOffset) 去实现

这里,xOffset和yOffset分别是鼠标x和y到当前位置的增量。

鼠标-拖拽

另一个很棒的功能是“拖动鼠标”,拖动指的是在按住单击按钮的同时移动鼠标,你可以通过以下功能实现拖动。

pyautogui.dragTo(x, y, duration=num_seconds)pyautogui.dragRel(xOffset, yOffset, duration=num_seconds)# 你仍旧可以用 pyautogui.drag(xOffset, yOffset) 

鼠标-点击次数

日常中我们可以使用鼠标执行不同类型的点击,同样PyAutoGUI可以让我们实现许多相似的功能:

单击、双击和三次点击鼠标按键向上和向下事件左点击、右点击和中间点击

语法

pyautogui.click(x=None, y=None, clicks=1, interval=0.0, button='left', duration=0.0)

click()功能的实践

pyautogui.click() # 在现有位置点击鼠标pyautogui.click(20,10) # 移动到 20, 10, 然后左点鼠标# 你也可以传递一个python的元组 (20,10)pyautogui.click(button='right') # 右键单击鼠标pyautogui.click(button='middle') # 点击鼠标中间键pyautogui.click(button='left') # 左键单击鼠标# 你也可以通过上面的方法传递它pyautogui.click(clicks=2) # 双击鼠标左键pyautogui.click(clicks=2, interval=0.25) # 双击鼠标左键,但两次单击之间的间隔为0.25秒pyautogui.click(button='right', clicks=3, interval=0.25) ## 击鼠标右键,两次单击之间有0.25秒的暂停

也有单独的功能来完成相同的工作。

pyautogui.doubleClick()#鼠标左键双击pyautogui.rightClick()#右键单击pyautogui.middleClick()#中键单击pyautogui.trippleClick()#左键三次每个功能都有更多可选属性,例如x和y坐标,持续时间和间隔

鼠标的点击和拖动包括按下鼠标按键并向上放开鼠标按键,如果要单独执行这些操作,请调用mouseDown()和mouseUp()函数,它们具有相同的x,y和button。

3)滚动功能

可以通过调用scroll()函数并传递整数个“单击”来滚动鼠标滑轮,在不同平台上,“单击”中的滚动量会有所不同。

语法

pyautogui.scroll(clicks, x=None, y=None)

你可以使用如下scroll()功能:

鼠标滚动

pyautogui.scroll(10)   #向上滚动10次“单击” pyautogui.scroll(-10)  #向下滚动10次“单击” pyautogui.scroll(10,x = 100,y = 100)  #将鼠标光标移至100、200,然后向上滚动10次“点击”

你可以hscroll()在linux和OSX平台中左右滚动。

4)键盘功能

键盘-键入

我们可以在pyautogui class中的函数的帮助下录入字母、单词或句子,它还提供了每个键入单词之间的延迟,这使它更加炫酷。

pyautogui.typewrite('Hello world!') #即可输出“ Hello world!”

如果要为这个句子添加动画效果,而且希望电脑在一小段时间后编写这个句子,可以使用interval属性。

pyautogui.typewrite('Hello world!',interval = 0.25)#打印出“ Hello world!” 每个字符后延迟0.25秒

键盘-按特殊指令按键

按特殊按键

要按上面这些键,请调用该press()函数并将字符串中定义的值传递给该函数。

要按下多个键,传递一个元组或键列表,还需要采用另一个可选属性presses=1 来限制按键的按下次数;还有一个属性interval=0.0,它是设定每次按键之间的间隔。

定义了此功能的键,可以通过以下选项进行检索pyautogui.KEYBOARD_KEYS,它会输出所支持的已定义键的列表。例如:enter,up,down,esc,f1。参见:

Keyboard Control Functionspyautogui.readthedocs.io

pyautogui.press('enter')  #按Enter键pyautogui.press('f1')     #按F1键pyautogui.press('left')   #按向左箭头键

press()只不过是keyUp()和keyDown()功能的封装包,它模拟按下一个键然后放开它。

pyautogui.keyDown('shift')  #按住Shift键pyautogui.keyUp('shift')    #释放Shift键

按键-快捷方式

为了方便快捷地按下键盘快捷键,hotkey()可以传递几个键字符串,这些字符串将按顺序按下,然后以相反的顺序释放。

pyautogui.hotkey('ctrl','shift','esc')#同时按下CTRL + SHIFT + ESC

上面的代码相当于:

pyautogui.keyDown('ctrl')     #按住CTRL按钮pyautogui.keyDown('shift')    #按住SHIFT按钮pyautogui.keyDown('esc')      #按住ESC按钮pyautogui.keyUp('esc')        #释放ESC按钮pyautogui。 keyUp('shift')      #释放SHIFT按钮pyautogui.keyUp('ctrl')       #释放CTRL按钮

5)消息提示功能

PyAutoGUI还显示JavaScript样式的提示框,一共有四种提示框功能:

消息提示-报错/警示

显示带有文本和单个“确定”按钮的简单消息框,返回单击的按钮的文本。

报错

pyautogui.alert(text='', title='', button='OK')

消息提示-确认窗口

显示带有“确定”和“取消”按钮的消息框,可以自定义按钮的数量和文本,返回单击的按钮的文本。

确认窗口

pyautogui.confirm(text='', title='', buttons=['OK', 'Cancel'])

消息提示-提醒窗口

显示带有文本输入以及“确定”和“取消”按钮的消息框。返回输入的文本,如果单击“取消”,则返回“无”。

提醒窗口

pyautogui.prompt(text='', title='' , default='')

消息提示-密码输入

显示带有文本输入以及“确定”和“取消”按钮的消息框,输入的字符显示为*。返回输入的文本,如果单击“取消”,则返回“无”。

密码录入

password(text='', title='', default='', mask='*')

6)屏幕截图功能

PyAutoGUI可以截取屏幕截图,将其保存到文件中,并在屏幕上定位图像。如果你需要单击一个按钮(图片类型)并想在屏幕上找到它的位置,这个方法会很有用。

截屏-截图

调用screenshot()将返回一个Image对象,传递文件名字符串将把屏幕截图保存到文件中,并将其作为Image对象返回。

im1 = pyautogui.screenshot()im2 = pyautogui.screenshot('my_screenshot.png')

如果你不需要整个屏幕的屏幕截图,那么还有一个可选的region关键字参数,,你可以传递区域的左侧、顶部、宽度以及高度的四整数元组来捕获:

im = pyautogui.screenshot(region =(0,0,300,400))

截屏-在屏幕上找到图像

如果想快速定位屏幕中上的图像文件,当然可以在屏幕上直观地找到它们,譬如,假设计算器应用程序正在您的计算机上运行,​​如下所示:

同时其中包含一个按钮的图像,譬如是按钮“7”:

你可以调用该locateOnScreen('7key.png')函数以获取屏幕坐标,返回值为4整数元组:左、上、宽度、高度,不过,如果你只想在屏幕上显示图像的x和y坐标,则可以调用locateCenterOnScreen()它,该方法将仅返回x和y坐标;如果找不到屏幕上的图像,它将升高ImageNotFoundException;如果要单击该图像或对象,只需将先前函数的返回值中的x和y坐标传递给click()function。

要了解有关在屏幕上定位对象的更多信息,请访问此链接:

​pyautogui.readthedocs.io

7)其它

其它-屏幕尺寸

为了获取屏幕尺寸,PyAutoGUI具有一个size()返回整数元组的函数:(宽度,高度)表示主监视器的尺寸。

pyautogui.size()    #输出:Size(width = 1366,height = 768)

其它-光标位置

为了获取光标的当前位置,PyAutoGUI有一个函数position()返回整数元组:(x,y)表示鼠标光标的当前位置。

pyautogui.position()#输出 :点(x = 487,y = 664)

标签: #python模拟键盘操作