2010-07-27 18 views
1

我正在爲Windows C#.net應用程序進行一些腳本化的GUI測試。我使用Ruby來驅動測試,並且我的腳在WIN32API領域正式上市 - 但我當然不會對它過於自信。事實上,我覺得我錯過了一些基本的理解。在這一點上,我知道如何獲得不同控件的唯一方法是通過控制類和可能的一些識別文本的組合。使用Ruby的WIN32API查找特定按鈕

我的問題是,我要測試的應用程序有一系列的幾個按鈕 - 所有這些按鈕都包含一個圖標和文本。

是否有我可以用來檢索特定按鈕的方法?我通過相對定位來玩這個概念,但那種糟透了,我對它並不感興趣。

我有權訪問源代碼;如果有一些我可以設置的識別屬性/屬性,我非常樂意。我只是無知在這一點上。

回答

0

不幸的是,它可能不容易。你想枚舉所有的窗口和他們的孩子,並尋找「線索」,哪一個是你想要的按鈕,所有使用win32api。

「win en allrating windows」的例子可以在win32screenshot(搜索「window_titles」)中找到。

http://github.com/rdp/win32screenshot

-r

+0

Grrrr ....就像你說的那樣不容易。這個問題真的沒有答案。列舉所有孩子是我現在發現的唯一可行的選擇,而我不得不採取的「線索」是相對定位。 使用這個作爲Windows測試框架正在迅速成爲一個不可選項。真是一個無賴,我很期待這一點。感謝您的嘗試。 – 2010-08-10 23:14:56

+0

是的。最新版本的win32screenshot gem在Win32 :: Screenshot :: Util類中有一些「助手」,如果有幫助的話。 – rogerdpack 2010-08-11 13:59:51

-1

好吧,如果有圖標,那麼你可以去頁面和查看代碼。然後找到視圖代碼中的按鈕圖標名稱。您將得到scr和alt參數,然後在以下代碼中複製名稱和過去。

ie.image(:SRC,/圖標名稱/)。點擊

ie.image(:ALT,/圖標名稱/)。點擊

+0

這是一個think windows應用程序,不是在瀏覽器中呈現的。 – 2010-07-29 12:35:36

0

這樣的UI自動化是一個PITA。我不知道Ruby,因此我無法幫助你解決具體問題,但是我可以提供一些來自我寫的最後一個基於gui的線束。它是用C#完成的,我利用System.Runtime.InteropServices來訪問user32.dll中的各種函數。

我然後能夠建立各種獲得各種GUI元素的句柄的方法。通常這是一個獲取父窗口的句柄,然後是關聯的子項的問題,直到我得到正確的控件,然後使用該句柄來執行該控件所需的任何功能。像Spy ++或WinID這樣的工具對於查看子控件和父控件之間的關係以及在構建線束時是否獲得正確的手柄非常有用。

對不起,我不能直接幫你。

+0

你對這是一個PITA是正確的。我已經在利用Spy ++,但給你的最好是一個控制手柄。我的問題是,我有7個按鈕是同一父母的所有孩子(按鈕都具有相同的控制類型)。我必須列舉它們。謝謝你的嘗試。 – 2010-08-10 23:16:23