由于 Robot 對界面控件識別的局限性,Robot 不能很好地操作一些控件,例如:日期時間控件 (DateTimePicker),屬性頁控件 (TabControl) 和工具欄控件 (Toolbar) 等等。本文講述了一種在 Robot 中調用 Windows API 來操作這些常用 GUI 控件的方法,該方法可以應用于所有的 Windows 中常用的控件。使用該方法能極大地擴展 Robot 與 GUI 控件交互的功能,同時有助于提高 GUI 自動化測試腳本的穩定性和可移植性。
在 Rational Robot 中錄制或者開發 GUI 自動化測試腳本的過程中,我們會發現 Rational Robot 在操作一些常用的 GUI 控件上有很多的局限性。這主要是因為 Rational Robot 無法識別被測控件的全部屬性或者被測控件的屬性會隨著環境而改變導致其狀態和錄制腳本時候的狀態不一致。
本文提供了一種方法可以對常用的 GUI 控件進行精確地操作。使用這個方法,能夠保證我們對控件操作的正確性,同時還不依賴于控件的初始狀態和環境,大大地提高了腳本的穩定性和可移植性。
在 Rational Robot 腳本中利用 Windows API 來操作 GUI 控件的基本原理
這個方法主要是利用了 Windows API 中的 SendMessage 函數能夠模擬用戶界面操作的功能。SendMessage 能夠通過給特定的對象發送消息來達到和用戶在界面上用鼠標或者鍵盤直接操作一樣的功能。
下面給出這個方法的大致步驟:
- 初始化 SendMessage 需要用到的參數。
- 申請內存區域,通過給內存區域向 SendMessage 傳遞參數。
- 調用 SendMessage 函數發送操作的消息。
- 操作結束。
下面我們將通過使用 Windows API 來操作日期時間控件 (DateTimePicker) 為例子來介紹這個方法的具體實現。
在接下來的內容中,您將可以了解到如下的內容:
- 日期時間控件簡介。
- Rational Robot 對日期時間控件操作的局限性。
- SendMessage 函數簡介。
- 在 Rational Robot 中如何調用 Windows API 函數。
- 在 Rational Robot 中如何實現參數的地址傳遞。
- 利用 Windows API 對日期時間控件操作的方法。
- 利用 Windows API 來操作 GUI 控件的實現細節。
![]() ![]() |
![]()
|
在 Windows 程序中常用的 GUI 控件有日期時間控件 (DateTimePicker),屬性頁控件 (TabControl) 和工具欄控件 (Toolbar) 等等。
日期時間控件 (DateTimePicker, 簡稱 DTP 控件 ) 通常和月歷控件綁定在一起工作,這個控件允許用戶選擇日期、時間和月份或者置成空值。缺省時,用戶可單擊控件的右邊的下拉按鈕,即可彈出月歷控件以供用戶選擇日期,通過風格的改變還可在日期時間控件內顯示時間。
在月歷控件中,用戶可按擊控件左右兩邊的箭頭按鈕 , 可前后翻頁顯示相關的月份。
圖 1. 日期時間控件簡單示例

在上圖示例中,用戶可以使用日期時間控件來設置 ExpireDate 屬性的值。
文章來源于領測軟件測試網 http://www.kjueaiud.com/