Python的确是一个了不起的编程语言和工具,它可以用来构建各种脚本和实用程序,这些脚本和实用程序可以帮助你化繁为简、让很多事情都实现自动化…以下是从海外博客上学习积累到的,做个分享,如果感兴趣,会陆陆续续做些编辑补充。(文末领取读者福利)
这次,我们会使用Python模块PyAutoGUI来使我们的鼠标和键盘自动化。曾经看到许多与PyAutoGUI相关的文章,不过在这里我们可以尝试提供一些使用此模块的独特玩法。
安装步骤
Windows上:在该系统安装和使用PyAutoGUI非常容易。如果已安装pip,则可以用pip,从PyPI安装它。
pip install pyautogui
Os X上:需要安装一些额外的模块才能运行PyAutoGui。
pip3 install pyobjc-core
pip3 install pyobjc
pip3 install pyautogui
Linux上:同样的,也必须安装一些软件包。
pip3 install python3-xlib
sudo apt-get install scrot
sudo apt-get install python3-tk
sudo apt-get install python3-dev
pip3 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。参见:
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。
同时其中包含一个按钮的图像,譬如是按钮“7”:
你可以调用该locateOnScreen(‘7key.png’)函数以获取屏幕坐标,返回值为4整数元组:左、上、宽度、高度,不过,如果你只想在屏幕上显示图像的x和y坐标,则可以调用locateCenterOnScreen()它,该方法将仅返回x和y坐标;如果找不到屏幕上的图像,它将升高ImageNotFoundException;如果要单击该图像或对象,只需将先前函数的返回值中的x和y坐标传递给click()function。
7)其它
其它-屏幕尺寸
为了获取屏幕尺寸,PyAutoGUI具有一个size()返回整数元组的函数:(宽度,高度)表示主监视器的尺寸。
pyautogui.size() #输出:Size(width = 1366,height = 768)
其它-光标位置
为了获取光标的当前位置,PyAutoGUI有一个函数position()返回整数元组:(x,y)表示鼠标光标的当前位置。
pyautogui.position()#输出 :点(x = 487,y = 664)
后续会陆陆续续补上一些其它有趣的办公自动化技巧
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
如果需要可以点击链接免费领取或者滑到最后扫描二v码
[CSDN大礼包:《python学习路线&全套学习资料》免费分享](安全链接,放心点击)
Python学习大纲
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
Python实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
Python面试刷题
Python副业兼职路线
这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以点击链接免费领取或者扫描二v码免费领取【保证100%免费
】
[CSDN大礼包:《python学习路线&全套学习资料》免费分享](安全链接,放心点击)