pywinauto处理ui自动化

programer-xinmu78 programer-xinmu78     2023-03-12     572

关键词:

pywinauto处理UI自动化
Python的pywinauto模块来处理Windows控件的UI操作。
 
1. 首先搭建pywinauto环境。
 
1). 可以参考vncdotool - A command line VNC client 安装python2.7.5, Twisted 和PIL。
 
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
 
目前最新的版本已经是0.5.1了。 可以参考:https://pypi.python.org/pypi/pywinauto
 
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()
For more info: http://pywinauto.googlecode.com/hg/pywinauto/docs/controls_overview.html#all-controls
 
 
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:windowssystem32 otepad.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:
http://pywinauto.github.io/
 
http://pywinauto.googlecode.com/hg/pywinauto/docs/contents.html
 
https://code.google.com/p/swapy/
 
pywinauto处理UI自动化

如何离线安装python模块?比如windows下ui自动测试模块pywinauto

...不到独立安装包。先安装python2.7后,上pypi.python.org下载了pywinauto-0.5.4.zip,解压后,运行setup.py,报告Noez_setup.py,又搜了一下网上下载了个ez_setup.py,运行时候又提示urllib2.URLError:<urlopenerror[SSL:CERTIFICATE_VERIFY_FAILED]certificateverifyfai... 查看详情

windowsgui程序自动化之pywinauto

WindowsGUI程序自动化之pywinauto一.pywinauto的安装与配置  官方英文版文档网址:https://pywinauto.readthedocs.io/en/latest/index.html  >>>>>>待续   查看详情

用pywinauto实现qt自动化(代码片段)

我试图使用pywinauto自动化一个QT应用程序,问题是pywinauto似乎无法点击或选择大多数对象,当它这样做,他们似乎是完全随机的那些我指定。即使使用诸如"点击输入"正确执行,但项目从未被实际点击。Pywinauto显然能够识别我试... 查看详情

pywinauto客户端自动化---窗口进行截图(代码片段)

...么在做客户端的时候,应该怎么进行截图呢?窗口截图在pywinauto中存在自带的截图函数 capture_as_image() 源码:defcapture_as_image(self,rect=None):"""ReturnaPILimageofthecontrol.SeePILdocumentationtoknowwhatyouca 查看详情

Pywinauto:如何调整活动窗口的大小

】Pywinauto:如何调整活动窗口的大小【英文标题】:Pywinauto:Howtoresizeactivewindow【发布时间】:2021-12-2419:45:02【问题描述】:我正在尝试自动化一些Windows任务,我得到了所有打开的窗口的数据框,然后我添加了一些列以便在继续... 查看详情

⭐ui自动化工具轻松实现微信消息收发⚡朋友圈爬取⁉️(代码片段)

...xff0c;我是小小明。😊前段时间有两位大佬分别分享了PyWinAuto或WinAppDriver实现对桌面程序的自动化控制和数据采集。👍不过PyWinAuto实现微信朋友圈采集只是直接打印出树形结构,后续真要存储数据,不仅耗时过长... 查看详情

聊聊pc端自动化最佳方案-pywinauto(代码片段)

...化最佳方案-WinAppDriver有小伙伴后台给我留言,说「 pywinauto」作为WinAppD 查看详情

pywinauto桌面应用自动化01--安装和启动(代码片段)

目录一、安装Pywinauto二、定位元素的工具三、启动和连接应用程序1、启动应用程序2、连接已经打开的应用程序1)通过进程号连接2)通过窗口句柄连接一、安装Pywinautopipinstallpywinauto官方文档:Whatispywinauto—pywinauto0.6.... 查看详情

使用 pywinauto 自动化的 Windows 应用程序不会检测到 TreeView 中的元素,尽管这些元素有自己的特征

】使用pywinauto自动化的Windows应用程序不会检测到TreeView中的元素,尽管这些元素有自己的特征【英文标题】:ThewindowsapplicationautomatingusingpywinautodoesnotdetectelementsinsideaTreeView,despitetheelementshavethereowncharacteristic【发布时间】:2021-05-1... 查看详情

python自动化框架:pywinauto实现博客之星自动化评论(代码片段)

场景:2021年度博客之星开始评选了,又是各路豪杰实践自身技术能力的时刻,平时都是写文章维护粉丝好友度,现在才是实打实的展现技术😃本分只是python框架的实践,不建议恶意推广,后果自负。... 查看详情

python自动化框架:pywinauto实现博客之星自动化评论(代码片段)

场景:2021年度博客之星开始评选了,又是各路豪杰实践自身技术能力的时刻,平时都是写文章维护粉丝好友度,现在才是实打实的展现技术😃本分只是python框架的实践,不建议恶意推广,后果自负。... 查看详情

pywinauto - 动态控制总是列在 print_control_identifiers()

】pywinauto-动态控制总是列在print_control_identifiers()【英文标题】:pywinauto-dynamiccontrolalwayslistedinprint_control_identifiers()【发布时间】:2020-10-2909:21:20【问题描述】:我正在尝试自动化连接和断开Internet的程序。因此,在一个窗口中,... 查看详情

python自动化框架:pywinauto实现博客之星自动化评论(代码片段)

...而复始。今天咱不讲爬虫,讲python的自动化测试框架pywinauto如何实现模拟手动操作(相同的还有pyAutoGui这个库),制造一个有血有肉的回复机器,爬虫的方式太暴力了,除了反爬外,还会给官方带来大... 查看详情

ui自动化之异常与截图处理

对操作不成功时,希望能够继续执行其他操作,或者是,希望操作不成功时,能够写日志记录 目录1、常见异常2、截图处理  1、常见异常 1.NoSuchElementException:没有找到元素2.NoSuchFrameException:没有找到iframe3.NoSuchWin... 查看详情

python+pywinauto写自动化测试脚本时,怎么获取windows软件页面元素按钮啊?刚开始用这个不太明白?

Win32APIbackend=win32-一个默认后端现在MFC,VB6,VCL,简单的WinForms控件和大多数旧的旧应用程序MSUI自动化backend=uiaWinForms,WPF,Store应用程序,Qt,浏览器参考技术A这个问题很专业,百度相关贴吧里应该有高手的专业回答。 参考技术B... 查看详情

ui自动化之特殊处理三(日期控件表格富文本)

日期控件表格富文本也是一些常遇到的需要特殊处理的定位 目录1、日期控件2、表格3、富文本 1、日期控件第一种:输入框属性为:readonly="readonly"#去掉元素的readonly属性js=‘document.getElementById("date").removeAttribute("readonly");... 查看详情

从材料 ui 处理自动完成组件的更改

】从材料ui处理自动完成组件的更改【英文标题】:HandlechangeonAutocompleteComponentfrommaterialui【发布时间】:2020-02-2905:56:01【问题描述】:我想使用Autocomplete组件作为输入标签。我正在尝试获取标签并将它们保存在一个状态中,以便... 查看详情

iOS UI 自动化:处理两个 alertView,其中一个触发另一个

】iOSUI自动化:处理两个alertView,其中一个触发另一个【英文标题】:iOSUIautomation:HandlingtwoalertViews,whereonetriggersanother【发布时间】:2013-06-1722:17:40【问题描述】:这就是我想要做的。1)我有一个alertView询问“你在哪里购物?”。... 查看详情