3 Pywinauto使用

连接为

http://pywinauto.github.io/

3.1 关联到一个应用,用以下方法:

start_(path)
connect_(handle or processID)

以下是示例代码

app = Application()
app.start_(“notepad.exe”)
app.connect_(path = r"c:\windows\system32\notepad.exe")
app.connect_(process = 2341)
app.connect_(handle = 0x010f0c)

3.2 调用一个窗体

当初始化app后,可以通过模糊匹配的方式操作该app中的一个窗体,变量名可以是该窗体标题的部分或全部

dlg = app.window_(title_re = ".*Part of Title.*")
dlg = app.PartOfTitle

例如,对一个写字板app应用中的窗口,在英文操作系统中,其标题是“untitled - Notepad”

可以使用以下两种方式调用该窗体

app.Untitled
app.Notepad

对于关于窗口,其标题是“About Notepad”

可以使用以下名称调用该窗体

app.AboutNotepad

3.3 调用一个控件

Pywinauto使用以下顺序定位一个控件

1: 控件的标题,即title

2:控件的类名,即friendly class

3:控件的标题加类名,即title + friendly class

对于“关于”窗口的中按钮,可以使用以下任意一种方式调用

app.AboutNotepad.OK
app.AboutNotepad.Button1
app.AboutNotepad.OKButton

如果在写字板中输入文字,执行退出时会 弹出询问窗口,对于其中的“不保存按钮”,其英文标题是Don’t Save,按照上面的规律,可以使用以下任意一方式调用该按钮,即

app.Notepad.DontSave 
app.Notepad.DoSave
app.Notepad.DotSave

以上无论DontSave、DoSave、DotSave都是标题Dont’ Save的一部分,pywinauto都可以通过模糊匹配的方式找到该按钮。

3.4 控件的基本操作

如下:

Control.Click() #点击
Control.MenuSelect() #菜单选择
Control.PressMouse/MoveMouse/ReleaseMouse() #按、移动、释放鼠标
Control.TypeKeys() #键入字符

其中TypeKeys()支持组合键,例如

Ctrl: ^

Alt: %

Shift: +

以下是其常见属性的读取:

ControlID()
FriendlyClassName()
WindowText()
Rectangle()
IsEnabled()
IsVisible()

如果想了解详细,可以查看pywinauto的官方文档,其链接是

http://pywinauto.googlecode.com/hg/pywinauto/docs/controls_overview.html

在该网页里,最上方是所有控件的基本操作和属性读取,下面依次是每个控件独有的操作,在实际的编程中,如果想知道某个控件的某个操作,可以通过文档查询。

4 其它说明

4.1 和PyUnit集成

只要代码书写符合PyUnit的要求,可以很容易的让pywinauto所测试的win32应用和PyUnit集成。

4.2 和Selenium集成

Selenium支持Python语言,因此,很容易让pywinauto与selenium。

在一些测试场景中,需要运行完某个win32应用后,立刻在web应用程序中查看结果,也就是说,一个测试同时要面对win32和web两种应用,可以用python+pywinauto+selenium组合的方式实现。

4.3 代码结构

有兴趣的网友,还可以阅读其源代码,主要的几个程序是

Application.py:与app相关   
Findwindows.py:窗体的查找
Timings.py:各种操作的时间间隔设置
win32_controls.py:普通控件的访问
common_controls.py:TreeView/ListView...等控件的访问
Menuwrapper.py:菜单的访问
 

Pywinauto使用方法的更多相关文章

  1. Python+Selenium - 文件上传

    如下图,从系统点击上传功能,打开到这种如下图页面的才适合本文介绍的处理方法 处理方法一 pywinauto库 优点:可以选择多个文件,路径中有中文也支持 缺点:只能Windows平台使用 安装 pip ...

  2. javaSE27天复习总结

    JAVA学习总结    2 第一天    2 1:计算机概述(了解)    2 (1)计算机    2 (2)计算机硬件    2 (3)计算机软件    2 (4)软件开发(理解)    2 (5) ...

  3. Python安装pywinauto时遇到error: The read operation timed out解决方法

    Python结合Pywinauto 进行 Windows UI 自动化,安装pywinauto时遇到的一些问题: 解决方法:很明显是链接超时国外网站你懂的V_P_N吧,直接通过报错信息的链接复制到浏览 ...

  4. Pywinauto在Windows Twain Driver自动化测试中的应用研究

    摘  要: 以Python为基础,结合对Twain Driver测试工具的具体需求,将Pywinauto引入到Twain Driver的自动化测试中.介绍了Pywinauto的基本概念,通过测试用例说 ...

  5. 用pywinauto进行win32应用程序的测试

    之前做win32应用测试时,用过很多大家耳熟成详的工具,接触pywinauto之前,对它的了解也不多,然而,随着对它了解的增多,发现它借助了python动态对象的能力,使得代码即便于书定,也便于阅读, ...

  6. 在中文windows下使用pywinauto进行窗口操作

    这两天开始接触pywinauto,听说百度的自动化QA也用这个模块,于是来了兴趣,但网上的教程很少,而且基本上都是拿官方的notepad来说,首先中文菜单的支持是问题,其次各种操作也没有写清楚,阅读官 ...

  7. pywinauto如何获取gridwindow控件的屏幕位置

    一:问题描述 问题一:通过查找pywinauto在线文档,其中没有讲解到gridwindow控件的方法,我不知道这个控件是不是标准控件,还是pywinauto根本就没适配这个控件.从网上查询了好多资料 ...

  8. pywinauto简单介绍

    Pywinauto是基于Python开发的,用于自动化测试的脚本模块,主要操作于Windows标准图形界面.它可以允许你很容易的发送鼠标.键盘动作给Windows的对话框和控件. 其中,最主要功能为对 ...

  9. pywinauto二次封装(pywinnat.py)

    将pywinauto常用方法进行封装,使得pywinauto用起来更简单 #头文件的引入 from pywinauto import application from pywinauto import ...

随机推荐

  1. (转)SLOW READPROCESSOR;ERROR SLOW BLOCKRECEIVER错误日志分析

    1.总结 "Slow ReadProcessor" 和"Slow BlockReceiver"往往是因为集群负载比较高或者某些节点不健康导致的,本文主要是帮助你 ...

  2. python3编程基础之一:操作

    基本操作有:读数据.写数据.运算.控制.输入.输出.语句块 1.读取数据: num1 = 50 num2 = num1 //通过num2取得num1的值,这就是逻辑上的读取 测试数据:print(nu ...

  3. Go by Example-Switch分支结构

    上一节提到了Go语言中的if/else结构,但是条件过多的时候就不适合用if语句了,这个时候我们就可以使用switch语句了. 基本特性 switch 是一个条件语句,用于将一个表达式的求值结果与可能 ...

  4. java maven scope compile,provide,system,test,runtime

    在一个maven项目中,如果存在编译需要而发布不需要的jar包,可以用scope标签,值设为provided.如下: <dependency>            <groupId ...

  5. oracle中的cursor

    游标是SQL的一个内存工作区,由系统或用户以变量的形式定义.游标的作用就是用于临时存储从数据库中提取的数据块.在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将处理结果显示出来 ...

  6. BitmapFactory: inSampleSize 的一些思考

    一. BitmapFactory.Options 中inSampleSize的取值问题 关于inSampleSize的取值问题Google已经给出了一个推荐的算法:(https://developer ...

  7. linux操作利器alias用法

    写在前边 学习这件事,有时候并不一定很刻意,而是从生活,从经验中去积累,不知道什么时候就发生了. type 命令 一般情况下,type命令被用于判断另外一个命令是否是内置命令,但是它实际上有更多的用法 ...

  8. Intel AI Cloud 使用

    1.申请AI Cloud A ‘training-ready’ hardware like Amazon® EC2, Intel® AI DevCloud, or a GPU-based system ...

  9. Quartz.Net 学习随手记之03 配置文件

    第一种方式:直接写入代码中 NameValueCollection properties = new NameValueCollection(); properties["quartz.sc ...

  10. VS2015编译GEOS

    下载链接:http://trac.osgeo.org/geos/ 1. 打开cmake,加载geos源码和定位geos的工程存放位置: 2.点击configure,会报错,首先设置CMAKE_INST ...