之前一个项目的特殊性, 以及一些操作权限上的问题,不能使用现有工具进行UI自动化。 在一些资深tester建议下决定采用Python的pywinauto模块来处理Windows控件的UI操作。

1. 首先搭建pywinauto环境。

2). 安装elementtree(elementtree-1.2.7-20070827-preview.win32.exe) 和ctypes(ctypes-1.0.2.win32-py2.5-AMD64.msi)。

3). 安装已经下载好的pywinauto(pywinauto-0.4.2)

> cd to xxx:\pywinauto-0.4.2

> python setup.py install

4). 测试下是否安装成功

> from pywinauto import application

> app = application.Application().start_("notepad")

> app.notepad.TypeKeys("%FX")

这段代码可以打开notepad'并将notepad通过使用用快捷键关闭。

2. 首先还需要一个工具: Swapy-ob 来获取控件属性

Swapy-ob 是一个可以获得控件原生的 Python 代码的工具。

3. 一些控件的基本操作

TreeView

Click()

Select()

ListView

Check()

UnCheck()

Select()

Note: ListView sometimes supports not good, especially do the action from lead to test machine.

Button

Click()

PressButton()

Edit

SetEditText()

SetText()

Window

Wait()

WaitNot()

Listbox / Combobox

Select()

Checkbox / Radio button

Check()

UnCheck()

MenuItem

MenuItem.Select()

MenuItem.Click()

Others

Close()

DoubleClick()

4.关联一个instance

start_() – The application is not running and need to start it

connect_() – The application is already running.

For example:

app = Application()

app.start_(“c:\windows\system32\notepad.exe”)

app.connect_(title_re = ".*Notepad", class_name ="Notepad")

5. 调用一个窗口

a_window = app.window_(title = "Page Setup", class_name = "#32770")

也可以用handle方式来处理:

w_handle = pywinauto.findwindows.find_windows(title=u'Active Directory Users and Computers', class_name='MMCMainFrame')[0]

aduc_window = pwa_app.window_(handle=w_handle)

aduc_window.print_control_identifiers() //打印当前窗口的所有控件和属性。

6. TypeKeys()快捷键

SHIFT   +

CTRL   ^

ALT   %

空格键是SPACE

BACKSPACE   {BACKSPACE}、{BS}   or   {BKSP}

BREAK   {BREAK}

CAPS   LOCK   {CAPSLOCK}

DEL   or   DELETE   {DELETE}   or   {DEL}

DOWN   ARROW   {DOWN}

END   {END}

ENTER   {ENTER}   or   ~

ESC   {ESC}

HELP   {HELP}

HOME   {HOME}

INS   or   INSERT   {INSERT}   or   {INS}

LEFT   ARROW   {LEFT}

NUM   LOCK   {NUMLOCK}

PAGE   DOWN   {PGDN}

PAGE   UP   {PGUP}

PRINT   SCREEN   {PRTSC}

RIGHT   ARROW   {RIGHT}

SCROLL   LOCK   {SCROLLLOCK}

TAB   {TAB}

UP   ARROW   {UP}

+   {ADD}

-   {SUBTRACT}

*   {MULTIPLY}

/   {DIVIDE}

7. Example for create AD user

pwa_aduc.window_(title=u'New Object - User', class_name='#32770').Wait('exists', timeout=30, retry_interval=1)

u_window= pwa_aduc.window_(title=u'New Object - User', class_name='#32770')

u_window['First name:Edit'].Wait('enable', timeout=30, retry_interval=1)

u_window['First name:Edit'].TypeKeys(User)

u_window['User logon name:Edit0'].TypeKeys(User)

u_window['Next'].Wait('enable', timeout=30, retry_interval=1)

u_window['Next'].Click(button='left', double=False)

u_window['Password:Edit'].Wait('exists', timeout=30, retry_interval=1)

u_window['Password:Edit'].TypeKeys(Password)

u_window['Confirm password:Edit'].TypeKeys(Password)

u_window['User must change password at next logon'].UnCheck()

u_window['Next'].Wait('enable', timeout=30, retry_interval=1)

u_window['Next'].Click(button='left', double=False)

u_window['Finish'].Click(button='left', double=False)

8. 当然因为Selenium 支持 Python, 所以可以用python+pywinauto+selenium组合的方式实现Windows和Web UI的处理。

Helpful link:

python windows ui自动化_pywinauto处理UI自动化相关推荐

  1. python +opencv 根据图片定位进行UI自动化

    python +opencv 根据图片定位进行UI自动化 前言: 做过移动端ui自动化的小伙伴,就会发现很多控件的元素是一样的或者是找不到的,为了解决这个痛点,于是通过图片灰度处理返回坐标x,y找到控 ...

  2. LuckyFrameWeb测试平台(一款支持接口自动化、WEB UI自动化、APP自动化,并且支持分布式测试的全纬度免费开源测试平台)

    官网:luckyframe.cn 源码地址:https://gitee.com/seagull1985/LuckyFrameWeb 分布式测试:使用Web-Client的方式,Web端负责基本信息管理 ...

  3. python 桌面程序自动化测试_对Windows桌面应用程序进行UI自动化测试

    题记:本文简述如何利用appium对Windows桌面应用程序进行UI自动化测试. 所谓UI自动化测试,就是模拟一个用户,对应用程序的UI进行操作,以完成特定场景的功能性集成测试. 要对Windows ...

  4. python自动化控制_python用于自动化控制编程

    Python自动化是做什么的 软件测试里面有Python自动化测试这个课程吗? 在人工智能+大数据的飞速发展的大环境下,Python开发语言日渐火爆,Python自动化测试也将逐渐取代传统的软件测试, ...

  5. C#【自动化测试】对Windows桌面应用程序进行UI自动化测试

    文章目录 1.文章一: 题记 UI自动化测试 参考 2.文章二: 3.重要资源[实例]: 1)已验证可用[非常好的例子,便于理解] 关键代码 2)未验证 1.文章一: 题记 本文简述如何利用appiu ...

  6. web python 自动化是什么_Web自动化Selenium+Python系列之一自动化测试基础

    汇智妹一直央求宝哥出版一本<Selenium+Python自动化测试>的书.经宝哥思来想去,最终还是决定免费公开出来,希望给大家带来一些帮助. 宝哥承诺: 从今日起,每周更新三次,如有异常 ...

  7. 《Python编程快速上手——让繁琐工作自动化》——第一部分 Python编程基础 第1章 Python基础 1.1 在交互式环境中输入表达式...

    本节书摘来自异步社区<Python编程快速上手--让繁琐工作自动化>一书中的第1章,第1.1节,作者[美] Al Sweigart,王海鹏 译,更多章节内容可以访问云栖社区"异步 ...

  8. python模块之lib2to3(py2转py3自动化工具)

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python模块之lib2to3(py2转py3自动化工具) #http://tieba.baidu.com ...

  9. python自动化办公入门书籍-Python如此神奇,让繁琐工作自动化 (文中含Python基础)...

    原标题:Python如此神奇,让繁琐工作自动化 (文中含Python基础) "你在2个小时里完成的事,我们3个人要做两天."21世纪早期,我的大学室友在一个电子产品零售商店工作.商 ...

  10. 【社区图书馆】《网络工程师的Python之路:网络运维自动化实战(第2版)》

    文章目录 图书前言 图书简介 图书作者.简介 图书好评 图书目录 总结:本人选择此图书的意义 图书前言 光阴似箭,岁月如梭.转眼之间,距离本书最早的电子书出版已经过去了三年之久.承蒙广大读者的厚爱,电 ...

最新文章

  1. 在Redis中设置了过期时间的Key,需要注意哪些问题?
  2. 搭建 数字证书_CA认证介绍及搭建过程
  3. python导入openpyxl报错问题,终于解决啦
  4. php 数组接在数组后面,PHP array_splice()接合数组用法的简单介绍
  5. 聚集索引和非聚集索引实例
  6. 【运筹学】线性规划数学模型 ( 单纯形法 | 最优解判定原则 | 可行解表示 | 目标函数推导 | 目标函数最大值分析 )
  7. TensorFlow入门:计算图
  8. Mol Cell Proteomics. |胡丹丹| 雷公藤红素通过SIRT1-FXR 信号通路保护胆汁淤积性肝损伤...
  9. java与c/c++进行socket通信的一些问题
  10. htop进程管理工具
  11. YOLOV3目标检测模型训练实例
  12. 比赛中学习(1)-使用python将大量图片重命名
  13. 初级计算机课,教学ppt课件计算机初级培训.ppt
  14. 了解一下DDD领域驱动设计
  15. 矩阵乘法c语言蓝桥杯,[蓝桥杯]ALGO-86.算法训练_矩阵乘法
  16. 用741运算放大器搭建RC正弦振荡器:文氏电桥振荡电路
  17. html 自动获取屏幕分辨率,HTML5教程 如何获取手机屏幕分辨率和浏览器分辨率
  18. 这几本值得你一看再看的程序员素养必备好书
  19. redis的高级教程
  20. 拉里·埃里森亲自支招,数据库自动化之后,DBA何去何从???

热门文章

  1. Luogu3455[POI2007] ZAP-Queries
  2. mysql 5.7 存储引擎_mysql5.7——innodb存储引擎总结-阿里云开发者社区
  3. hexo添加_hexo 添加标签和分类
  4. android studio 工程rebuild没反应,Andriod Studio Clear Project或Rebuild Project出错
  5. 纳韦斯托克斯方程的推导_这5个改变世界的方程,跟你想的不一样!
  6. mysql新建数据库数据类型_数据库Mysql的学习(二)-数据类型和创建
  7. K8S-删除Terminating状态的namespace
  8. JZOJ 4.2 C组 打鼹鼠
  9. Ubuntu server解决不能访问外网问题
  10. a 和an 的用法区别