欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

用pywinauto進行win32應用程序的測試

系統 2749 0

今天整理自己的博客,發現已經快一年沒有更新了,汗。

今天給大家介紹的是 pywinauto ,它是用 python 語言編寫的開源測試工具,專用于測試 win32 應用,其 官網網址是: http://pypi.python.org/pypi/pywinauto/0.4.0

我之前做 win32 應用測試時,用過很多大家耳熟成詳的工具,接觸 pywinauto 之前,對它的了解也不多,然而,隨著對它了解的增多,發現它借助了 python 動態對象的能力,使得代碼即便于書定,也便于閱讀,而且功能非常強大,最重要的一點,就是它以一種比較優雅的方式對 win32 窗體、控件進行各種操作,不再使用以往錄制 - 修改代碼的方式。

例如以下的例子 ( 以下代碼均在英文操作系統上測試通過

      from pywinauto import application 
app = application.Application.start("notepad.exe")
app.Notepad.MenuSelect("Help->About Notepad")
app.AboutNotepad.OK.Click()		
app.Notepad.MenuSelect("File->Exit")		
    

在以上的例子中,總共只有5行代碼,便可以執行注釋中的各項操作。其最大的亮點出自第三行開始,其變量 Notepad 沒有定義和聲明,拿來就可以用,同樣,第四行的 AboutNotepad 以及它后面的 OK 都是這樣被調用。

如果在英文操作系統下,運行以上代碼,可以清楚的看到軟件工作的全部過程。

看到這里,大家會問,上面說的這些變量是怎么來的?為什么就可以被調用呢?

這就是 pywinauto 的特色,它先通過 app 獲得某應用程序的句柄,然后用“模糊匹配”的方式去查找對應的窗口和控件,以上的例子中,由于寫字板的標題是 Untitled? –?Notepad ,所以便可以用標題里的一部分,也就是 Notepad 去訪問它,同樣,用 Untitled 也可以。

同時,在寫字板的“關于”窗口中,那個關閉按鈕的標題是“ OK ”,所以便可以用 OK 去調用它。

講了這么多,現在具體介紹 pywinauto 的安裝和使用

?

1 安裝

1.1 安裝 python

安裝 pywinauto 有兩個要求:

1 :? python 的版本不得高于 2.6

2 :使用 python 32 位版本

因此,建議大家去 python 官網下載其 32 位的 python2.6 并進行安裝。

1.2 安裝依賴庫

Pywinauto 有兩個依賴庫,即

SendKeys-ctypes

SendKeys

可以去其對應網站下載、安裝,也可以從本文的附件中下載,稍后會加上該附件。

說明,以上兩個庫以下pywinauto 都有 setup.py 程序,用戶可以在 DOS 命令下,運行 python?setup.py?install 進行 安裝,安裝成功后,這些庫會出現在python 的安裝目錄的 Lib\ site-packages下。

1.3? 安裝 pywinauto

只要 python 符合安裝要求(前面說的 32 位,低于 2.7 ),且安裝依賴庫, pywinauto 的安裝非常容易,此處略過。

2? python 的開發環境(可選)

我使用 Eclipse+PyDev 插件進行 python 的開發。

具體的配置方法是

1:? 下載 PyDev

2:? 解壓,將解壓后的兩個文件夾 features、plugins拷貝到Eclipse dropins目錄下

3 :啟動 Eclipse ,點擊菜單 windows->Preferences,彈出的窗口左側應該出現PyDev 節點

4 :點擊 PyDev 下的 Interpreter-Python ,點擊 New 按鈕,找到 Python.exe 的安裝路徑,然后點擊兩次確定按鈕即可。

5 :此時可以新建 Python 工程、模塊,可以在 Eclipse 進行 Python 的開發和調試。

3 Pywinauto 使用

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進行win32應用程序的測試


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产欧美一区二区三区久久人妖 | 91九色视频 | 久久一区二区精品综合 | 日韩专区中文字幕 | 国产在线一区二区 | 2018一级毛片免费观看 | 一级毛片 在线播放 | 狼伊千合综网中文 | 91国在线观看 | 国产一区二区精品在线 | 色黄视频网站 | 国产合集福利视频在线视频 | 添人人躁日日躁夜夜躁夜夜揉 | 亚洲网站色 | 午夜一区二区三区 | 99热97 | www.国产欧美 | 免费精品视频在线 | a黄视频| 午夜视频你懂的 | 国产精品久久 | 亚洲爽| 国内一级特黄女人精品片 | 亚洲91视频| 久久综合丝袜长腿丝袜 | 亚洲国产精品视频 | 欧美亚洲理伦电影毛片在线播放 | 久久美女视频 | 欧美在线另类 | 久久精品国产一区二区三区不卡 | 毛片一区二区三区四区 | 99久久久久久国产精品 | 欧美黑人乱大交 | 欧美妇乱xxxxx视频 | 国产专区在线播放 | 视频一区二区不卡 | 国产黄色网址在线观看 | 久久久久久亚洲 | 欧美黑人性暴力猛交免费看 | 亚洲黄色片在线观看 | 国产91影院 |