999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Pywinauto在Windows Twain Driver自動化測試中的應用研究

2012-11-24 02:17:28翁省輝喻武龍
網絡安全與數據管理 2012年3期

翁省輝 ,喻武龍

(1.北京理工大學 珠海學院 計算機學院,廣東 珠海 519088;2.北京理工大學 珠海學院 信息學院,廣東 珠海 519088)

Windows下掃描儀驅動程序主要使用Twain協議[1]。由于Twain協議的復雜性,Twain Driver一般會以圖形界面方式提供眾多掃描選項以供用戶使用。掃描選項數量眾多以及選項之間的依賴性,決定了Twain Driver的測試是一項非常艱巨的任務。Twain Driver的測試主要包括基本功能測試以及回歸測試。一般一個Twain Driver包含近百個基本功能測試用例以及隨著缺陷數量增長而不斷增加的回歸測試用例。特別是臨近產品正式發布日期時,每修正一個缺陷,都會帶來極大的工作量:一方面,要做基本功能測試檢查是否有新的缺陷;另一方面,要做回歸測試檢查之前已修正好的缺陷是否受到影響。由于此時產品已處于開發周期的后期階段,缺陷的基數通常會比較大,回歸測試的測試用例將變得非常龐大。更重要的是,如果有多個缺陷需要修正,那么以上兩個方面的測試還將重復執行多次,測試工作將成倍增長。

針對以上問題,本文以Python為基礎,結合對Twain Driver測試工具的具體需求,提出了一個基于Pywinauto實現自動化測試的解決方案[2]。Pywinauto通過模擬測試人員在用戶界面上的鼠標、鍵盤操作,來減少測試人員的手工操作。應用結果表明,該方案能夠極大地提高測試效率,在減少了測試時間的同時,也確保了產品質量。

1 Pywinauto的基本概念

Pywinauto是基于Python開發的,用于自動化測試的腳本模塊的第三方擴展包,它通過向Windows對話框和控件發送鼠標、鍵盤動作來實現Windows圖形界面的自動化測試[3]。

1.1 標識應用程序實例

Pywinauto在使用前首先需要將應用程序實例連接到一個進程,有兩種標識方法分別對應兩種情況:

(1)應用程序未啟動即應用程序實例不存在:此時可以調用 start_ (self,cmd_line,timeout=app_start_timeout)來啟動應用程序。示例如下:

(2)應用程序已啟動:此時只需調用 connect_(self,**kwargs)連接到已運行的應用程序。示例如下:

1.2 標識應用程序窗口

在取得應用程序實例之后,就可使用該實例標識應用程序窗口,主要有3種標識方式:

(1)使用窗口標題。示例如下:

或者將窗口標題直接當成一個變量形式使用,但這樣標識,非英文語系時窗口會出現問題,所以這種方法并不推薦。示例如下:

(2)窗口標題結合正則表達式,特別是當窗口標題不確定或經常變化時尤為有用。示例如下:

(3)直接取最上層窗口。此時需要確保被標識的應用程序窗口為頂層窗口。示例如下:

1.3 標識應用程序窗口控件

Pywinauto的測試原理主要模擬控件上的手工操作,所以Pywinauto自動化測試中重要的一環就是標識應用程序窗口上的控件。假設應用程序窗口有一內容為OK的Button控件,主要有兩種方式標識這個控件:

(1)使用窗口控件標題。示例如下:

或者將控件標題直接當成一個變量形式使用。與標識窗口類似,這種方法也不推薦。示例如下:

(2)使用Friendly class,特別是當控件標題內容為空時尤為有用。示例如下:

需要說明的是:Button、Button0及 Button1都是代表第一個Button,Button2代表第二個Button。標準控件通過Friendlyclass很容易標識出來,但是非標準控件其Friendly class并不明顯,這時可通過Visual Studio自帶的Spy++來查看,如圖1所示。

1.4 如何操控鼠標與鍵盤

在取得Windows對話框和控件后,就可以向對話框或者控件發送鼠標、鍵盤操作來實現自動化測試。

鼠標的操作:(1)點擊操作:模擬鼠標的點擊操作可以結合具體的控件,Pywinauto對于不同的控件提供了不同的函數。例如,模擬Next Button的點擊事件可以表示為 Dialog.["Next"].Click();模擬 ComboBox 控件的選擇操作可以使用如下方式:Dialog.ComboBox1.Select(1)。(2)拖動操作:主要使用 PressMouse()、MoveMouse()和ReleaseMouse()實現鼠標的按下、移動以及釋放操作。示例如下:

按鍵的操作:Pywinauto使用SendKeys來進行按鍵處理[4]。一些程序并不會將菜單項指定給主 UI(如 Word),這樣就不能直接使用菜單方法,而是使用快捷鍵的方式,這就需要使用SendKeys發送快捷鍵。如要表示按下Alt+F 組合鍵,可以寫成 MainWin.TypeKeys("%F")。 需要說明的是:TypeKey還可表示按照一定時間間隔接受多個組合按鍵。例如,在Word2003打開從掃描儀導入圖片的窗口,需要先按 Alt+I,然后按 Alt+P,最后按 Alt+S。用SendKeys可以表示為:

1.5 中文支持

Pywinauto在對中文應用的菜單進行操作時,通常會由于編碼問題而使中文應用的對話框和控件無法進行標識。可以使用以下兩種方法解決:

(1)使用"u"或者"ur"將字符串轉換成 UTF格式的字符串。例如:

(2)使用decode函數強行轉換字符串編碼。例如:

2 Twain Driver自動化測試實現

由于Twain協議使用的廣泛性,目前已經有很多應用程序支持該協議。Windows下常見的應用程序主要有Twack_32、Microsoft Word、PageManager 以及 Adobe Photoshop等,這些應用程序均可作為Twain Driver的測試工具。其中Twack_32是TWAIN官方所提供的一個工具,其兼容性最好,而且它不僅提供了TWAIN應用的例程,還可以在計算機系統上安裝一個虛擬的圖像輸入設備(TWAIN_32SampleSource), 所 以 測 試 人 員 通 常 使 用Twack_32對Twain Driver進行測試。本文也以Twack_32為例實現Twain Driver的自動化測試。

2.1 Twack_32啟動的實現

下載并安裝完后,打開Twack_32界面,然后依次選擇 File->Select Source,彈出一個對話框,如圖2所示。

實現時,首先通過調用start函數啟動應用程序獲取應用程序實例,然后利用該應用程序實例和界面的標題(TWAIN_32Twacker)取得應用程序窗口實例,最后根據應用程序窗口實例取得控件標識,之后就可以操縱該控件了。中文菜單可使用"u"轉換字符串。實現代碼如下:

2.2 自動化測試實現

Twack_32成功啟動后,如果安裝了需要測試的驅動,將會出現被測 TwainDriver的 界面,圖3為某一驅動的界面,以下實現也以此驅動為例。

該驅動支持三種掃描模式,分別是:Full Color、Gray 和 Black and White。假設需要測試該驅動的掃描模式是否實現正確,首先需要將mode改為 Full Color,其他參數不變,掃描并觀察圖片是否正確;然后依次將mode改為Gray和 Black and White并重復以上操作。使用Pywinauto實現對掃描模式的自動化測試。實現時盡量將每一個測試案例用一個相應的函數實現,有利于測試腳本的后期維護。示例代碼如下:

本文以Twain Driver為例介紹了Pywinauto在圖形界面自動化測試中的應用與實現。Pywinauto通過模擬測試人員在用戶界面上的鼠標、鍵盤操作來減少測試人員的手工操作。實現時,將各個測試用例對應一個函數,然后根據測試需求調用相應的函數。由于基本功能測試時測試用例相對穩定,所以腳本一旦寫好,以后每次發布版本前只需運行一次腳本即可完成基本功能測試。而在回歸測試階段,每增加一個測試用例,便增加一個相應的實現函數,從而避免遺漏對之前版本缺陷的測試。此外,本文的方案只需稍作修改,便可應用于其他Windows圖形應用程序的測試,特別是程序界面手動操作比較復雜時,該方案的效果更加明顯。

[1]TWAIN—standard for image acquisition devices[DB/OL].http://twain.org.2001.

[2]辛敏杰,高建華.一種改進的 GUI測試框架 DART[J].計算機工程,2009,35(7):55-58.

[3]Contents-pywinauto v0.4.1 documentation[DB/OL].http://pywinauto.googlecode.com/hg/pywinauto/docs/contents.html,2010.

[4]SendKeys|Rutherfurd.net[DB/OL].http://www.rutherfurd.net/python/sendkeys,2008.

主站蜘蛛池模板: 国产人人乐人人爱| 国产福利小视频在线播放观看| 日本欧美精品| 久久亚洲日本不卡一区二区| 亚洲熟女偷拍| 久久人搡人人玩人妻精品一| 亚洲熟女偷拍| 少妇人妻无码首页| 久久婷婷五月综合色一区二区| 欧美一级黄色影院| 一级毛片无毒不卡直接观看| 国产男人的天堂| 无码一区中文字幕| 找国产毛片看| 欧美狠狠干| 欧美日韩精品一区二区视频| 国产乱人伦精品一区二区| 亚洲Va中文字幕久久一区| 亚洲天堂视频网| 国产午夜无码专区喷水| 国产福利小视频高清在线观看| 亚洲一区无码在线| 国产成人综合亚洲网址| 久久综合成人| 黄色一及毛片| 内射人妻无套中出无码| 72种姿势欧美久久久久大黄蕉| 综合五月天网| 亚欧美国产综合| 91亚洲精品国产自在现线| 精品国产女同疯狂摩擦2| 欧洲高清无码在线| 国产精品亚洲αv天堂无码| 免费激情网站| 免费又爽又刺激高潮网址| 一级成人a做片免费| 欧美无专区| 动漫精品中文字幕无码| 91青草视频| 亚洲第一区欧美国产综合| 日韩在线视频网站| 亚洲国产精品一区二区高清无码久久| 99er这里只有精品| 国产jizzjizz视频| 毛片网站免费在线观看| 国产成人av一区二区三区| 久久国产香蕉| 91在线免费公开视频| 色老头综合网| 无码网站免费观看| 日韩毛片免费观看| 国产精品林美惠子在线观看| 在线日韩一区二区| 国产精品妖精视频| 成人日韩视频| 欧美影院久久| 国产精品密蕾丝视频| 久久精品中文字幕免费| 精品少妇人妻一区二区| 免费观看欧美性一级| 亚洲综合网在线观看| 国产成人精品一区二区免费看京| 高h视频在线| 国产精品福利导航| 日韩二区三区无| 啊嗯不日本网站| 囯产av无码片毛片一级| 国产一线在线| 国产福利免费视频| 亚洲bt欧美bt精品| 亚洲国产一区在线观看| 久久国产香蕉| 色综合久久无码网| 国产欧美一区二区三区视频在线观看| 一本久道久综合久久鬼色| 亚洲精品日产AⅤ| 精品视频一区二区观看| 亚洲天堂日本| 日韩精品一区二区三区中文无码| 日韩精品高清自在线| 最新精品久久精品| 手机精品视频在线观看免费|