这篇文章主要介绍了python应用程序设计 易建勋电子版,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。
前言
自动化操作 是一门可以
提高工作效率
和简化工作流程
的重要手段同义词。而使用 Python 编程语言进行自动化操作应用程序,是极其方便的```*``Python 为我们提供了许多强大的工具和库,使得我们能够轻松地控制桌面应用程序或Windows上的GUI应用程序文字生成视频小程序。
本文将深入探讨Python 在自动化操作应用程序方面的应用,介绍关键的库和工具,以及实际案例和技巧,以其帮助读者更好地理解和应用自动化操作的概念。
重复的工作都应该应用自动化操作。好处有几个:
- 提高工作效率
- 减少人为错误
- 实现批量处理
- 增强任务可靠性
- …
本文着重介绍 自动化操作应用程序;
更多的是做一个介绍,后续再更新一些代码上和比较细致的操作。(本文无代码,放心观看)
关于 自动化操作浏览器,可以移步这里查-- 🎃🎃妙用Selenium。
干货来袭~
干货来袭~
干货来袭~
知识点📖📖
名称 | 解释 |
---|---|
uiautomation | 自动化控制Windows应用程序的Python库 |
pywin32 | 是Win32(PYWIN32)扩展的 Python 的reamde文件,可访问Python的许多Windows API。 |
pyautogui | 模拟鼠标和键盘操作的Python库 |
Spy++.exe | SPYXX.EXE是一个基于 Win32 的实用工具,它提供系统的进程、线程、窗口和窗口消息的图形视图。使用 Spy++ 可以执行下列操作: 显示系统对象(包括进程、线程和窗口)之间关系的图形树。 搜索指定的窗口、线程、进程或消息。 查看选定的窗口、线程、进程或消息的属性。 |
inspect.exe | 同Spy++.exe 差不多 |
关于 Spy++.exe 和 inspect.exe 工具的使用,参考这篇文章的介绍:
Python中最全的窗口操作,如窗口最大化、最小化、窗口置顶、获取缩放比例等
专栏脉络
🎃🎃妙用Selenium系列文章
- 笔者之前的专栏:🎃🎃妙用Selenium
🐱🏍🐱🏍uiautomation 系列文章
- 笔者之前的专栏:🐱🏍🐱🏍uiautomation 专栏
- 【uiautomation】获取微信好友名单,可指定标签 & 全部
- 【uiautomation】微信群发消息,获取全部聊天记录
- 【uiautomation】微信群发消息,可发送文本 & 文件
- 【uiautomation】微信群发消息,获取群通讯录名单
- 【PyQt/PySide6 + uiautomation】微信群发工具,纯Python编写~
- 待更新【uiautomation】入门指南:基础概念和最佳实践
- 待更新【uiautomation + mitmproxy】WeChat文章采集
pyautogui 系列文章
- 待更新【pyautogui】入门指南:基础概念和最佳实践
- 待更新【pyautogui】案例之小程序自动化(查询)
Python自动化 多工具系列
- 待更新 【mitmproxy + pyautogui】Python自动化之 自动化爬虫某乎
- 待更新 暂时想不到,后续再做补充。
什么是自动化
自动化(Automation)是指机器设备、系统或过程(生产、管理过程)在没有人或较少人的直接参与下,按照人的要求,经过自动检测、信息处理、分析判断、操纵控制,实现预期的目标的过程。
以上是百度百科对 自动化 的释义,在这里使用的是 Python自动化操作。
Python自动化操作 是指使用Python编程语言来实现自动化操作的过程。
Python 提供了丰富的库和工具,使得开发者可以轻松地编写自动化脚本来完成各种任务。
在自动化操作方面,Python可以用于控制桌面应用程序或Windows上的GUI应用程序,进行网页操作,执行文件处理和系统管理任务等。
通过使用Python自动化操作,可以简化繁琐的工作流程,提高工作效率,减少人工错误,并为更复杂的任务提供可扩展性和定制性。
Python自动化的种类
在使用Python进行自动化操作时,笔者将其分为两种主要情况:
- 自动化操作浏览器
- 自动化操作应用程序
这两种自动化操作的目标和方法略有不同,因为应用程序和浏览器具有不同的界面和交互方式。
应对这两种不同的情况需要选择适当的工具和库,根据具体需求和场景选择合适的自动化方法,并开发出相应的自动化脚本。
1. 自动化操作浏览器
本文暂不介绍。
这该类型中,可以使用Python来自动化控制Web浏览器,进行各种网页操作。
可以使用Python中的 Selenium、Puppeteer、Puppeteer、Splinter 等框架来模拟用户在浏览器中的行为,如打开网页、填写表单、点击按钮、截取页面内容、数据采集、网页测试等。
在这一块,笔者比较熟悉。特别是在使用到 Selenium 时候,可谓是炉火纯青。
关于我的 Selenium专栏文章,点击直达 – 🎃🎃妙用Selenium
在这里笔者推荐使用 Selenium,因为熟悉。
2. 自动化操作应用程序
本文的重点。
在这一类型中,可以使用Python来自动化控制桌面应用程序或Windows上的GUI应用程序。
这包括识别和操作应用程序的UI元素、模拟鼠标和键盘操作等。可以使用库如uiautomation、win32gui和pyautogui来实现这种自动化。
当然,也还有其它优秀的库,但是这三个库基本可以覆盖该类型的操作。所以只介绍这几个库。
关键库和工具的深入研究
这里介绍几个关键的Python库,以帮助读者更好地理解和应用自动化操作应用程序的技术。
这几个库各有优点,若结合使用,效果更佳!
读者若用心就会发现,这里介绍的 uiautomation 和 pyautogui 几乎是重合的。
那为什么这里要介绍这两个呢?
- 在某些情况下,使用uiautomation无法定位到Windows窗口,无法定位到窗口意味着无法操作(应用程序不支持UIAutomation
- 这个时候就需要借助 win32gui 去定位窗口。然后再借助 pyautogui的 坐标定位去点击等操作;
1. uiautomation
关于uiautomation的一些使用,可以参考这里 – 🐱🏍🐱🏍uiautomation
uiautomation是一个用于自动化控制Windows应用程序的Python库,它基于Microsoft UI Automation技术,提供了访问和操作应用程序的UI元素的能力。
uiautomation可以识别和操作窗口、按钮、文本框等UI控件,模拟鼠标和键盘操作,并提供了许多辅助功能,如查找元素、获取属性、监控事件单等等。
通过uiautomation,我们可以编写脚本来实现复杂的自动化任务,如表单填写、界面操作和数据提取。
它可以与各种Windows应用程序进行交互,包括桌面应用程序、Windows商店应用程序等。
2. win32gui
介绍看起来头疼,它的作用主要在于获取窗口的句柄并定位窗口,或者将窗口展示在最前端等~
win32gui是Python的一个标准库,用于操作Windows上的GUI应用程序,提供了对Windows窗口和控件的访问和操作功能。它使用了Windows API来实现与窗口系统的交互。
适用于对Windows上的原生GUI应用程序进行自动化操作。win32gui可以获取窗口的句柄、标题、位置等信息,可以模拟鼠标和键盘操作,包括发送消息、点击按钮、输入文本等。
3. pyautogui
pyautogui是一个用于模拟鼠标和键盘操作的Python库。
它可以控制鼠标的移动和点击(坐标定位),模拟键盘的按键和组合键操作。pyautogui还提供了截屏、获取屏幕信息、检测图像等功能。
它不仅适用于Windows系统,也适用于其他操作系统,如macOS和Linux。
pyautogui是一个跨平台的自动化库,可以用于各种自动化任务,包括图形界面测试、UI操作、游戏自动化等。
4. Spy++.exe & inspect.exe
在使用uiautomation和win32gui时候,需要用到这两个 Spy++.exe 或 inspect.exe 工具来辅助去定位到目标窗口。
关于这两个具的使用,参考下面这篇文章的介绍:
实际案例和示例
在本节中,我们将通过实际案例和示例代码来展示如何使用Python进行自动化操作应用程序。这些案例将涵盖不同的应用场景,包括控制桌面应用程序、模拟鼠标和键盘操作,以及UI元素的识别和操作。通过这些实例,读者将学习到如何应用前面提到的关键库和工具,实现自己的自动化操作应用程序任务。
这里介绍了几个实际工作中使用到的案例,后面看是否需要补充代码。
集大成者案例
这是一个类爬虫项目,主要获取账号登录后的Cookies,然后再使用Cookies去请求数据;
因为逆向 Cookies难度太大,同时账号也很多,所以这里使用Python自动化去获取 Cookies。
该案例糅合了 Selenium、图片识别、Js模拟人为滑动滑块,loguru日志记录、Pandas处理Excel数据等等;
- 可以参考以下流程图。
这里使用视频展示运行效果:
- CSDN视频正在审核~
Selenium登录网站获取Cookies(过滑块 so easy!!!
案例一
使用 uiautomation
-
使用uiautomation库来定位和操作Windows应用程序的UI元素。
-
使用uiautomation库模拟鼠标点击、拖动和键盘输入的操作。
使用这个库可以实现在特定的应用程序中自动化进行复杂的UI交互,例如自动填写表单、点击特定按钮等。
案例二
当uiautomation无法定位到窗口时候,使用pyautogui;
pyautogui无需定位窗口,根据坐标位置就可以进行点击,然后再操作键盘操作,就能进行输入等操作。
使用pyautogui:
- 完成 案例一 的全部操作;
案例三
使用pyautogui和os/subprocess模块:
- 使用pyautogui库模拟鼠标和键盘操作;
- 使用os或subprocess模块执行系统命令或外部程序。
结合使用这些库可以实现自动化进行系统级操作的任务,例如自动运行命令行程序、操作文件和目录等。
案例四
使用 win32gui和pyautogui
- 使用win32gui库来查找和控制Windows窗口的属性和状态;
- 使用pyautogui库模拟鼠标和键盘操作;
- 结合使用这两个库可以实现在特定的窗口中自动化进行GUI操作,例如自动点击窗口中的按钮、输入文本等。
案例五
使用mitmproxy + uiautomation/pyautogui
- mitmproxy监听数据包
- uiautomation/pyautogui左自动化操作
两者配合可以做一个不停歇的爬虫程序。
案例六
uiautomation
- 群发WeChat消息
- 添加好友等
案例七
根据你的实际来。
最佳实践和技巧
代码示例后续再写文章补充,这里占一个坑位
代码示例后续再写文章补充,这里占一个坑位
代码示例后续再写文章补充,这里占一个坑位
在本节中,我们将分享一些最佳实践和技巧,帮助读者提高自动化操作应用程序的效率和准确性。
这些技巧包括异常处理、优化等待时间、定位UI元素的策略等。通过遵循这些实践和技巧,读者将能够更好地应用Python进行自动化操作应用程序,提高工作效率和减少错误。
在Python中进行自动化操作时,以下是一些最佳实践和技巧,可以帮助你提高效率和准确性:
- 选择合适的自动化工具和库:根据你的需求和场景,选择适合的自动化工具和库。例如,对于网页自动化操作,可以使用Selenium;对于桌面应用程序,可以使用uiautomation或pyautogui等。
- 使用等待机制:在进行自动化操作时,应该考虑到应用程序的加载和响应时间。使用适当的等待机制,例如显式等待或隐式等待,以确保在操作之前等待页面或应用程序加载完全。
- 准确定位元素:对于网页自动化操作,准确地定位元素是非常重要的。使用合适的定位策略,如Selenium使用ID、类名、XPath或CSS选择器,来定位元素。uiautomation使用ClassName和Name来定位元素。避免使用依赖于位置的定位方式,以提高脚本的稳定性。
- 处理异常和错误:在自动化操作中,应该合理处理异常和错误情况。使用try-except语句捕获可能发生的异常,并编写适当的错误处理代码。这样可以增加脚本的健壮性,并提供更好的错误信息和日志记录。
- 使用日志记录:在自动化操作中添加日志记录功能,以便跟踪和调试脚本的执行过程。使用Python内置的logging模块或第三方库loguru,记录关键事件和操作,以及错误和异常信息。
- 模块化和重用代码:将自动化操作的代码进行模块化和重用,以便于维护和扩展。将通用的功能封装成函数或类,可以在不同的自动化任务中重复使用,提高代码的复用性和可维护性。
- 编写清晰的文档和注释:为自动化脚本编写清晰的文档和注释,说明脚本的目的、逻辑和使用方法。这样可以帮助其他人理解和使用你的脚本,并在需要时进行修改和维护。
- 进行测试和调试:在编写自动化脚本时,进行充分的测试和调试是至关重要的。使用单元测试框架如pytest或unittest,确保代码的正确性和稳定性。使用调试工具和技术,如断点调试和日志输出,帮助定位和解决问题。
- 快捷键唤醒程序:快速唤醒程序或脚本,不需要手动打开应用程序或通过复杂的步骤进行操作。
遵循以上最佳实践和技巧,可以提高Python自动化操作的效率和质量,减少错误和问题的发生,并保护系统和数据的安全。
潜在挑战和解决方案
在实际应用中,自动化操作应用程序可能会遇到一些挑战,如应用程序界面的变动和复杂操作场景。来讨论一下这些潜在挑战。通过了解这些挑战和解决方案,读者将能够更好地应对各种自动化操作应用程序的情况,确保自动化任务的稳定性和可靠性。
以下是一些常见的挑战以及相应的解决方案:
-
UI元素的变动:应用程序的UI元素可能会随着版本更新或布局调整而发生变化,导致自动化操作失效。
解决方案:使用稳定的UI定位策略,例如使用唯一的属性或层级结构路径来定位UI元素,而不是依赖于固定的坐标或索引。
-
异步操作和延迟: 一些操作可能需要一定的时间才能完成,或者涉及异步操作,导致自动化脚本的执行速度与应用程序的响应速度不匹配。
解决方案:使用适当的延迟,等待操作完成或等待应用程序响应。可以使用
time.sleep()
函数来添加延迟,或者使用等待特定条件的方法,如等待特定元素出现或消失。 -
不同操作系统和环境的兼容性:不同操作系统和环境之间可能存在差异,导致自动化脚本在某些环境下无法正常工作。
解决方案:是编写可移植的代码,使用跨平台的自动化库,如pyautogui,并进行适当的环境配置和测试。
-
异常处理和错误处理:自动化脚本在执行过程中可能会遇到各种异常和错误,如元素定位失败、网络连接问题等。
解决方案:是使用适当的异常处理机制,例如try-except语句,来捕获和处理异常情况,并提供相应的错误处理逻辑。
-
性能和稳定性:自动化操作可能需要处理大量的数据和复杂的任务,可能会面临性能和稳定性方面的挑战。
解决方案:是优化代码,使用合适的算法和数据结构,避免资源泄漏,进行性能测试和压力测试,以确保自动化脚本的性能和稳定性。
-
安全性和权限限制:某些自动化操作可能涉及敏感数据或需要特定的权限访问系统资源,可能受到安全性和权限限制的限制。
解决方案:是确保脚本的安全性,使用合适的身份验证和授权机制,并遵守相关的安全和隐私规定。
-
图像识别问题: 当无法使用元素定位方法时,可能需要使用图像识别来定位和操作界面元素。
解决方案:使用图像识别库,如OpenCV,结合模板匹配或特征提取等技术,来识别和定位目标界面元素。创建适当的图像模板,并使用算法来匹配和定位目标元素。
-
维护和扩展性:随着应用程序或系统的变化,自动化脚本需要进行维护和更新,以适应新的需求和变化。
总结🎈🎈
通过本文的介绍,我们深入了解了Python在自动化操作应用程序中的重要性和应用价值。
我们了解了自动化操作应用程序的概念和范围,并介绍了关键的库和工具,如uiautomation、win32gui和pyautogui。我们通过实际案例和示例代码展示了Python在自动化操作应用程序中的实际应用。
最后,我们分享了最佳实践和技巧,讨论了潜在挑战和解决方案。让我们深入研究这些模块和技术,掌握Python自动化操作应用程序的精髓,提升工作效率,开创更加智能和高效的工作方式。
后话
本次分享到此结束,
see you~~🐱🏍🐱🏍