UI自動化測試工具White簡介以及使用經驗總結(一)

1、White簡介 java

White是微軟開發的一個開源工具,它提供了一套主要用於UI測試的框架。它適用於WinForm, WPF, Win32 以及SWT(java)的測試。 框架

White是用C#開發的,但White除了支持.Net語言外,還支持PythonRuby。(PythonRuby是經過IronPython or IronRuby做爲端口與.Net Framework結合。) 工具

White 是基於UIAutomation 這個類庫的,它是經過調用UIA並對它進行封裝,因此它的結構如這樣的:最底層是Windows 操做系統,在 Windows 操做系統之上是 .Net運行時,在.Net運行時之上是UI Automation Library, UI Automation Library之上是White, 而後最上層是咱們調用White 組建的測試框架。(什麼是UIA,它是.Net的一個類庫,它可以幫助咱們找到UI 控件,能獲得控件的屬性值,並可以操做控件。固然它主要是基於Windows平臺的。) 測試

2、White 尋找控件的機制 spa

White是經過UI Automation API來找到某個窗口中的控件的。它經過遍歷窗口中的全部控件來找到指定控件。那麼若是有多個窗口打開時,怎麼知道去哪一個窗口尋找呢,是這樣的,每次要尋找某個控件時,必須把它所屬的窗口句柄傳入,這樣UIA經過window message與指定窗口通訊,進而去指定窗口尋找相應控件。 操作系統

其實Whiteselenium, watir等框架很是類似。它經過UIAutomation庫和Windows Message實現對窗口(控件)的識別與操做,White 將對應的Control信息暴露給UI Automation, 再經過UI Automation庫,將這些Control信息識別成各UI Item 設計

White尋找控件的方式主要有如下幾種: orm

l  經過控件的Name尋找 索引

l  經過控件的AutomationID尋找 開發

l  經過控件顯示的Text尋找

l  經過控件的類型尋找

l  經過索引尋找

l  經過位置尋找

這幾種尋控件的方式中,若是單一的只使用一種的話,前幾種的尋找速度都不是很快,除了最後一種經過位置來尋找。

實踐經驗:

那麼咱們有沒有辦法來提早下尋找速度呢,我在實際使用中通常會運用這些方法:

將多種尋找方法結合在一塊兒,好比,既提供控件類型,又提供名字或者Automation ID等。(這樣UIA在找控件時能夠有的放矢的去找,而不用一個個的去找。首先根據類型,就能夠過濾掉一大批,而後只要在符合這個類型的控件裏面找到Auto ID對應的就好了。)

還有一種方法是先找到主控件,而後再利用主控件再尋找屬於主控件下一級的控件。好比,先得到一個GroupBox的句柄,而後在這個GroupBox下找到指定Name的就好了。這樣就大大的縮小了尋找範圍,不用滿窗口的去尋找了。

固然有時White遍歷一遍還不必定能百分之百找到想要的控件,這時,咱們就要在本身的代碼中設置一個循環,當判讀返回爲null時,等上個一秒半秒而後於讓它去找一次。固然這個循環也不是無限制的,咱們最可能是給它10次機會,若是仍是找不到,就只能拋出異常了或者返回null

這個問題在對控件進行操做時也會發生,因此對每一個控件的操做,咱們要等到這個控件enable以後,再去操做。

3、White經過位置尋找控件

位置尋找能夠快速的找到相應的控件,而不用像其它方法同樣遍歷窗口中的各個控件。咱們只要將被測程序運行過一遍,White就會自動將全部控件的位置信息保存到一份XML文件中,之後再次運行被測程序時White就能夠快速的找到指定的控件。控件是信息是與指定窗口相關聯的,因此窗口大小、位置的改變都不會影響找控件。固然若是界面的設計有改動,那就得重寫以前保存的信息了。

4、元素識別工具,方便咱們給White 提供控件信息。

UISpy.Net3.0 SDK提供的工具,並不屬於White框架,可是咱們能夠經過該工具進行元素的識別。UISpy會將全部元素識別成一棵控件樹,它能提供控件的詳細信息,好比:Name, AutoID, Type, Position等屬性和方法。

相關文章
相關標籤/搜索