- 背景
在我的工作过程中,需要每天凌晨自动点击桌面的应用图图标启动应用,但在实际操作过程中,由于自动化操作代码所在的机器是多人共用的,每个人操作的应用都不一样,且有人习惯使用完成后不关闭应用界面,此时的应用显示在界面最顶端,而有的人习惯用完后将界面返回到电脑桌面再离开。那么我在编写自动化脚本的时候,在点击桌面应用图标之前应不应该做返回桌面的动作呢?如果此时已经在电脑桌面,我又做了一次返回桌面的操作,那么Windows会将界面切换到当前运行的最顶层软件窗口界面,这时的界面上是没有我需要运行的应用图标的,所以自动化脚本会执行失败。那如果我不做这个返回的动作,万一脚本执行的时候,正好有其他软件在运行挡在了最前端界面,这时的界面也是没有我需要运行的应用图标的。
此时,就需要先判断我需要操作的应用图标有没有被遮挡,再决定是否要做返回桌面的动作。
- 思路
-
优先判断当前的界面上是否有需要点击运行的应用图标,比如微信图标、QQ图标等等,这里就根据大家所需要的来设定判断条件了;
-
如果所有需要操作的图标在当前的界面上都已经找到了,那么就不需要做返回桌面的操作了;
-
如果所需要操作的图标中有部分图标没有搜索到,那么就表明当前电脑桌面有其他软件在运行挡住了应用图标,此时需要返回到桌面。
-
代码实现
有了上面的思路之后,我们就可以来编写脚本了。
-
首先,为了判断的界面是否有我们需要操作的应用图标,我们要先从电脑桌面把应用图标比如微信图标、QQ应用图标截图保存为图片,并命名为weixin.jpg、QQ.jpg。
我的电脑桌面如下:
截取微信、QQ图标后保存的图片如下:
上面的准备工作做好之后,我们就要写一个函数用来判断,当前电脑的最顶层界面,是否有我们的应用图标:
import pyautogui,time
# 判断当前界面是否已经是能找到所要操作的应用图标
def is_now_desk():
time.sleep(5)
QQ = pyautogui.locateOnScreen("D:\\img\\QQ.jpg",confidence=0.9)
weixin = pyautogui.locateOnScreen("D:\\img\\weixin.jpg",confidence=0.9)
if len(QQ) > 0 and len(weixin) > 0: # 长度大于0,说明找到了图标了。
print("找到inspect应用图标,坐标如下:", pyautogui.center(QQ))
print("找到微信应用图标,坐标如下:", pyautogui.center(weixin))
else:
# 如果没有找到,则需要返回桌面
# TODO ,这里需要补充返回桌面的函数代码,后面我们会补充上。
pass
-
接着,我们要封装返回桌面这个操作的函数,我这里给大家列了四种方式来实现(两种方式+两个自动化工具)
我们知道,返回电脑桌面,可以通过发送win+d的快捷键来实现,也可以点击电脑屏幕右下角的那个小区域来实现。那么接下来,我们就提供过两种不同的自动化工具,分别实现点击右下角区域、发送win+d快捷键返回到桌面。
1)**pyautgui自动化工具
**注:这个工具的具体使用方法在之前的文章中有介绍,感兴趣的可以点击链接回顾《Python实现按键精灵?掌握这个自动化库,上班可以摸鱼了》
通过pyautogui点击右下角区域回到桌面:
import pyautogui,time
def back_to_desk_by_click():
# 点击右下角的按钮,返回桌面
pyautogui.click(1918,1051)
通过pyautogui发送win+d快捷键返回桌面:
import pyautogui,time
def back_to_desk_by_pyautoguihotkey():
# 使用pyautogui发送快捷键的方式返回桌面
pyautogui.hotkey("win","d")
2)pywinauto自动化工具
通过pywinauto点击右下角区域回到桌面:
from pywinauto import keyboard,mouse
def back_to_deskt_by_pywinauto_click():
mouse.click(button="left",coords=(1918,1051))
通过pyautogui发送win+d快捷键返回桌面:
from pywinauto import keyboard,mouse
def back_to_desk_by_pywinauto():
# 使用pywinauto发送win+d快捷键的方式返回桌面
keyboard.send_keys("{LWIN down}""d""{LWIN up}")
到这里,我们的返回桌面的函数已经封装好了,有四个函数可以用,大家就看心情或者翻牌子挑选吧。
我们把上面的代码整合在一起:
import pyautogui, time
from pywinauto import keyboard, mouse
def back_to_desk_by_pyautoguiclick():
# 通过pyautogui点击右下角的坐标,返回桌面
pyautogui.click(1918, 1051)
def back_to_desk_by_pyautoguihotkey():
# 使用pyautogui发送快捷键的方式返回桌面
pyautogui.hotkey("win", "d")
def back_to_deskt_by_pywinauto_click():
# 使用pywinauto 点击右下角的坐标,返回桌面
mouse.click(button="left", coords=(1918, 1051))
def back_to_desk_by_pywinauto():
# 使用pywinauto发送win+d快捷键的方式返回桌面
keyboard.send_keys("{LWIN down}""d""{LWIN up}")
# 主入口函数
def is_now_desk():
time.sleep(5)
QQ = pyautogui.locateOnScreen("D:\\img\\QQ.jpg", confidence=0.9)
weixin = pyautogui.locateOnScreen("D:\\img\\weixin.jpg", confidence=0.9)
if len(QQ) > 0 and len(weixin) > 0: # 长度大于0,说明找到了图标了。
print("找到inspect应用图标,坐标如下:", pyautogui.center(QQ))
print("找到微信应用图标,坐标如下:", pyautogui.center(weixin))
else:
# 如果没有找到,则需要返回桌面
back_to_desk_by_pyautoguihotkey()
if __name__ == '__main__':
is_now_desk()
好了,到这里我们就能确保自动化脚本能够正确点击到应用图标启动应用完成后续自动化的一系列操作了。
感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
工具都帮大家整理好了,安装就可直接上手!
三、最新Python学习笔记
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、Python视频合集
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、面试宝典
简历模板![在这里插入图片描述](https://img-blog.csdnimg.cn/646863996ac44da8af500c049bb72fbd.png#pic_center)
![](https://img-blog.csdnimg.cn/img_convert/d616a9bbec8cec8de0061cc0f4d04099.png)