python控制软件自动化(python自动化模块)

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的自动化工具包。使用这些工具包可以让繁琐的工作自己动起来,实现自动化,解放我们的双手,大大地提高工作效率。不过在智能方面还有很大的提升空间,这也是未来努力的方向。

(0)

相关推荐

  • windows下Python+Editplus windows Python开发环境

    (1)从Python官方网站http://www.python.org/download/下载Python Windows下的最新的安装程序(python-3.1.1.msi)。 (2)双击运行安装程 ...

  • 【Python教程】Python如何入门?:[1]

    操作方法 01 Python是一门简单易学又功能强大的编程语言.它有非常高效的数据结构和高效的面向对象的编程方法.它有着优美的语法.动态的类型定义,是一种解释行的编程语言,这些都使得它在脚本编程和一些 ...

  • Python | 如何用pip安装模块和包

    pip是Python官方推荐的包管理工具. 操作方法 01 如果不是必须使用某个较早的Python版本,建议在Python官网下载最新的Python版本.关于哪些版本自带pip工具,参考下面文章. 0 ...

  • 如何运行python文件(python文件可以直接运行吗)

    当我们python程序执行完毕后,所有存储在内存中的数据全部会丢失,如果需要将程序运行结果持久的保存下来,就需要通过文件来进行保存数据.文件按照存储的种类可以分为:文本文件和二进制文件.文件是以字符编 ...

  • notepad++一键运行python,调用python调试

    之前懒蛇写了notepad++如何一键调用批处理,这次懒蛇讲一下如何一键调用Python.添加好一键调用,调试的效率高得多了. 操作方法 01 打开notepad++,找到菜单栏的run菜单. 02 ...

  • 利用IDLE(Python GUI)编写Python程序

    步骤/方法 01 安装编译器.将工具双击打开,按照默认方式安装即可.安装完成后在开始-程序中找到IDLE(Python GUI)快捷方式,打开.你可以新建一个窗口,保存为*.py的文件格式.内容可以是 ...

  • python退出命令 Python怎么退出

    在win上经常会用到上面的编程语言的,那么如何进行退出成了新手的麻烦的,特别是不记得朋友的.在下介绍一下退出的方法. 操作方法 01 先在终端上,找到这个[>>>]提示,如下图. 0 ...

  • python 如何安装模块

    Python作为现在非常流行的语言,可以说是非常的火了.特别是它的模块的概念,让开发者可以使用丰富的第三方模块.开发出丰富的应用,下面就跟随本教程一起来学习如何在Python中安装模块吧. pip安装 ...

  • Python中导入模块的方法

    介绍import,from...import....的用法和效果. 操作方法 01 python是由一系列的模块组成的,每个模块就是一个py为后缀的文件,同时模块也是一个命名空间,从而避免了变量名称冲 ...

  • 如何利用python语言sysconfig模块获取系统参数

    python语言中的sysconfig模块,可以查看系统的一些参数指标:直接调用sysconfig模块自带的方法,下面利用几个实例说明sysconfig模块获取系统参数,操作如下: 操作方法 01 第 ...