百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

Python自动化工具

yuyutoo 2024-11-24 01:04 2 浏览 0 评论

Python的优雅、简洁与强大深深地吸引着我们,它海量的工具包为我们的工作提供了强有力的支持。在自动化工作中,Python更是一把利器,数十行代码就能干净利落地完成很多繁琐重复的工作。本文在这里将介绍Python中四种常用的自动化工具包。

Pywin32

Pywin32是一个Python库,为python提供访问Windows API的扩展,提供了齐全的Windows常量、接口、线程以及COM机制等等。这个库里面最重要的三个模块win32api、win32gui和win32con。

查找句柄:窗体是指窗口到文本框的所有控件,每个窗体都有独立的句柄。要操作任意一个窗体,都需要找到这个窗体的句柄。我们可以用win32gui模块中的FindWindow函数和FindWindowEx函数(子窗体函数)来得到指定窗体的句柄。(使用Spy++或Inspect可以很方便地查看目标窗口的窗口名、类名和句柄)

菜单操作:窗口的菜单就像窗口的标题栏一样,是窗口自身的一部分,不是其他窗体控件,也就没有办法用FindWindow和FindWindowEx返回句柄。我们可以用win32gui模块中的GetMenu,GetSubMenu和GetMenuItemID函数来操作菜单。

控件操作:控件的操作基于win32的消息机制,我们可以使用win32api模块的SendMessage函数向窗体发送消息来进行操作。同时也可以利用mouse_event、keybd_event等函数模拟鼠标和键盘对控件进行操作。

下面的代码实现了记事本的自动保存。

Pywinauto

Pywinauto是实现Windows窗口程序自动化的一把利器,它主要操作于Windows标准图形界面。Pywinauto基于Pywin32,其最主要功能为对Windows标准控件的一系列动作可编程处理,包括对窗口的指定、鼠标或键盘操作、获得控件属性等等。相比起Pywin32,Pywinauto使用起来更方便稳定,对中文的支持度也更好。下面简单地介绍一下Pywinauto的使用。

首先,利用Spy++或Inspec判断窗口程序开发语言是什么,即确定backend。Pywinauto支持“win32”和“uia”两种backend。接着,从Pywinauto.application中导入Application模块,利用Application().start函数或Application().connect函数关联到一个应用。如:app = Application(backend="uia").start('notepad.exe')。此后,利用正则表达式进行模糊匹配找到应用app的一个窗体,如:dlg = app.window_(title_re = ".*Part of Title.*")。最后,可以对窗体上的控件模拟鼠标或键盘的操作,实现应用窗口的自动操作。

下面代码实现了对记事本菜单的操作和键盘输入。


Pyautogui

Pyautogui是另一个常用的基于Python的GUI自动化工具,能够支持多个平台。Pyautogui主要是用程序自动控制鼠标和键盘操作。虽然Pyautogui和Pywinauto都是实现GUI 的自动操作,但两者的侧重点不同。Pyautogui侧重于鼠标、键盘、截图等功能,且是基于图像匹配进行定位的,而Pywinauto侧重与对系统的操作,虽然也有键盘和鼠标的模拟操作,但核心上还是软件上的操作更多。两者各有所长,需根据实际情况选择合适的。

Pyautogui对鼠标的移动、点击、拖拽,键盘按键输入、按住操作,以及鼠标+键盘的热键同时按住等操作都能准确模拟,可以说手能动的都可以,并且简单方便。但由于控件的定位依赖于图像匹配,所以得事先保存好控件的截图,然后在操作时自动截取屏幕,利用图像匹配找到控件在屏幕的像素位置,再将鼠标自动移至控件处点击。Pyautogui自带的图像匹配函数精度不是很高,可以加入opencv中的匹配函数来代替,更加准确方便。

下面代码实现了百度网盘的自动登录。

Selenium with Python

Selenium与上面三种工具有点不同,它的自动化对象是各种浏览器,包括Chrome、Safari、FireFox、IE等主流界面式的浏览器,常在爬虫应用中发挥很大的作用。Selenium最为主要的模块是Webdriver模块。Webdriver提供了一系列浏览器对象定位的方法,常用的有id、name、class name、tag name、xpath、link text等等。定位对象后,Webdriver提供了操作对象的方法,包括清除内容clear、模拟输入send_keys、单击鼠标click、提交表单submit等等。有时候为了保证脚本运行的稳定性,需要在脚本中添加等待时间,有sleep、implicitly_wait和WebDriverWait三种方法选择。此外在多表单切换、多窗口切换、警告窗口处理、上传文件、获取验证码等方面Webdriver都有相应的方法,功能强大。

下面的代码实现了模拟提交搜索功能,首先等页面加载完成,然后输入到搜索框文本,点击提交。


本文分别介绍了Pywin32、Pywinauto、Pyautogui和Selenium with Python四种基于Python的自动化工具包。使用这些工具包可以让繁琐的工作自己动起来,实现自动化,解放我们的双手,大大地提高工作效率。不过在智能方面还有很大的提升空间,这也是未来努力的方向。

相关推荐

TCP协议原理,有这一篇就够了

先亮出这篇文章的思维导图:TCP作为传输层的协议,是一个软件工程师素养的体现,也是面试中经常被问到的知识点。在此,我将TCP核心的一些问题梳理了一下,希望能帮到各位。001.能不能说一说TC...

Win10专业版无线网络老是掉线的问题

有一位电脑基地的用户,使用...

学习计算机网络需要掌握以下几方面基础知识

计算机基础知识操作系统:了解常见操作系统(如Windows、Linux)的基本操作和网络配置,例如如何设置IP地址、子网掩码、网关和DNS服务器等,以及如何通过命令行工具(如ping、tr...

网络工程师的圣经!世界级网工手绘268张图让TCP/IP直接通俗易懂

要把知识通俗地讲明白,真的不容易。——读者说TCP/IP从字面意义上讲,有人可能会认为TCP/IP是指TCP和IP两种协议。实际生活当中有时候也确实就是这两种协议。然而在很多情况下,它只是...

三分钟了解通信知识TCP与IP协议(含“通信技术”资料分享)

TCP/IPTCP/IP分层模型①应用层...

网闸与防火墙:网络安全设备的差异与应用

在网络安全领域,网闸(安全隔离网闸,GAP)和防火墙(Firewall)是两类重要的防护设备。尽管它们都服务于网络安全防护,但在设计理念、技术原理、安全效能及适用场景等方面存在显著差异,以下从五个维度...

S7-300的TCP/IP通信

一、首先在项目中创建2个S7-300的站点;二、硬件组态中,设置合适的TCP/IP地址,在同一网段内;...

西门子S7-1500 PLC的 MODBUS TCP通信

MODBUSTCP使MODBUS_RTU协议运行于以太网,MODBUSTCP使用TCP/IP和以太网在站点间传送MODBUS报文,MODBUSTCP结合了以太网物理网络和网络标准TC...

系统规划与管理师新版备考必备:第7章考点思维导图解析

备考系统规划与管理师的小伙伴们,福利又来啦!今天为大家带来《系统规划与管理师(第2版)》第7章考点的思维导图,助你高效梳理重点,让备考更有方向!...

TCP/IP、Http、Socket 有何区别与联系?

HTTP协议对应于应用层,Socket则是对TCP/IP协议的封装和应用(程序员层面上)。HTTP是应用层协议,主要解决如何包装数据。而我们平时说的最多的Socket是什么呢?实际上...

西门子PLC串口协议与以太网通信协议对比

西门子plc品牌众多,通信协议的类型就更多了,具体可分为串口协议和以太网通信协议两大类。...

网络编程懒人入门(十三):一泡尿的时间,快速搞懂TCP和UDP的区别

本文引用了作者Fundebug的“一文搞懂TCP与UDP的区别”一文的内容,感谢无私分享。1、引言...

程序员必备的学习笔记《TCP/IP详解(一)》

为什么会有TCP/IP协议在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样...

一文读懂TCP/IP协议工作原理和工作流程

简述本文主要介绍TCP/IP协议工作原理和工作流程。含义TCP/IP协议,英文全称TransmissionControlProtocol/InternetProtocol,包含了一系列构成互联网...

如何在 Windows 10 和 Windows 11 上重置 TCP/IP 堆栈

传输控制协议/Internet协议,通常称为TCP/IP,是您的WindowsPC如何与Internet上的其他设备进行通信的关键部分。但是当事情出错时会发生什么?你如何解决它?幸运的...

取消回复欢迎 发表评论: