引言
正在使用python进行自动化的编辑,这期间也是刚好测试了几个相关的软件:win32gui,pyautogui,pywinauto,发现网上拿他们进行对比的文章几乎没有,自己试了一下,也就是按照自己一两天的感觉对比一下,希望对于后边遇到同样问题的人可以有所参考。
win32gui
win32gui,我的理解就是更多关于窗体的查找操作。包括窗口到文本框的所有控件就是窗体,所有的窗体都有独立的句柄。要操作任意一个窗体,你都需要找到这个窗体的句柄,这里,我们就可以用到FindWindow函数和FindWindowEx函数。
具体可以参考这个文章:
如何利用Python和win32编程避免重复性体力劳动(一)——开始、FindWindow和FindWindowEx: 链接
至于查找到控件的具体句柄之后,便可以进行一系列的操作了,比如说向edit控件填写内容。
win32api.SendMessage(0x209C8, win32con.WM_SETTEXT, 0, '300')
不过我使用的感觉是:每次打开程序,句柄值都会变化,这样每次使用都是必须先查找,后进行操作。
这里面还经常会碰到两个软件的使用,spy++和Inspect。下面是他们的下载地址:
Inspect:
pyautogui
pyautogui这个文章我觉着写得很不错,基本上看完就可以直接使用了。
Python基础之pyautogui模块(详细总结鼠标键盘操作)链接
pyautogui的主要功能包括:1. GUI 控制功能,2. 鼠标操作,3. 屏幕处理,4. 键盘输入
尤其讲到其中的屏幕处理,我们控制鼠标的操作,不能盲目的进行,所以我们需要监控屏幕上的内容,从而决定要不要进行对应的操作。
包括另外一个功能,通过原先制定一个图像,然后在屏幕上识别它的位置,这个很实用。
import pyautogui
pyautogui.PAUSE = 1
# 图像识别(一个)
btm = pyautogui.locateOnScreen('zan.png')
print(btm)
# 图像识别(多个)
btm = pyautogui.locateAllOnScreen('zan.png')
print(list(btm))
pywinauto
Pywinauto是基于Python开发的,用于自动化测试的脚本模块,主要操作于Windows标准图形界面。它可以允许你很容易的发送鼠标、键盘动作给Windows的对话框和控件。
其中,最主要功能为对windows标准控件的一系列动作可编程处理。包括对窗口的指定、鼠标或键盘操作、获得控件属性等等。程序的开始为对所需应用的启 动或连接。获得程序连接后,pywinauto通过窗口的名称、类名、是否可见等属性寻找匹配的窗口,进而通过类似方法寻找用户所需的控件,并获得相应的 句柄。之后,用户可通过易理解的编程方式对指定控件进行相关操作的编程,包括鼠标点击、键盘输入、判断控件间关系、获取控件属性等。
这个文章讲得比较清楚,
pywinauto教程链接
然而在我本机运行的时候,却一直报错。
报的是:from pywinauto.application import Application 这一句。
我的python版本是3.7.6,使用的是anaconda安装的,不知道看官是否也是这个情况,所以后边的测试没法做。网上找到有个说法是这个只能用于3.7.4的版本。
pynput
以前用的较多的键盘控制轮子是pynput。pynput是什么?官方说法:“他可以控制和监听我们的输入设备,目前支持鼠标和键盘的控制与监听;因为我只使用了设备的控制 至于监听并没作深入了解 文章也不设计”。这个文章讲得比较清楚,就是单纯的鼠标链接的使用。
python监听、操作键盘鼠标库pynput详细教程 链接