pywinauto處理UI自動化

來源:互聯網
上載者:User

標籤:

之前一個項目的特殊性, 以及一些操作許可權上的問題,不能使用現有工具進行UI自動化。 在一些資深tester建議下決定採用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.關聯一個instancestart_() – The application is not running and need to start itconnect_() – 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:

http://pywinauto.github.io/

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

https://code.google.com/p/swapy/

pywinauto處理UI自動化

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.