2010-07-11 38 views
3

我已經繼承了一個C#窗口的應用程序,我並不是真正的瘋狂。我有一個即將到來的最後期限,我很害怕,我的一些變化可能會對現有功能產生不利影響。自動化Windows GUI測試 - FindWindowEx和控件類

我有一個業餘愛好者背景RoR和我相當舒服的測試在該框架(使用RSpec和黃瓜)。

我喜歡測試腳本,可以定期運行,我願意花我的個人時間爲這個特定的項目開發這些。我從PragProg.com購買了一本用Ruby進行腳本GUI測試的書(http://pragprog.com/titles/idgtr/scripted-gui-testing-with-ruby)。到目前爲止,我正在挖掘我所看到的,我認爲這應該會很好。

不幸的是,我對Windows應用程序開發的基本理解缺乏瞭解。我正在調用FindWindowEx(通過Win32API)來「試圖」檢索我的應用程序中的子控件。

我的困惑很大一部分是我應該如何檢索我試圖捕獲的控件的類名。在文中提供的示例如下:

edit = find_window_ex.call @main_window, 0, 'ATL:00434310', nil 

哪裏@main_window是我的應用程序的主窗口句柄,和「ATL:...」是類的文本框區域。對於作者是如何抵達'ATL:...',沒有任何解釋。

我讀過一些關於MS的SPY ++的非常舊的帖子,但那些似乎已經過時(或者因爲某些原因,當我安裝vs2010時沒有安裝它)。

那麼,對於find findWindowEx調用來說,找到控件類的最佳方式是什麼?我確實有源代碼 - 我應該從那裏拉?如果我沒有源代碼並且想要自動化應用程序,該怎麼辦?是否有一個實用程序允許您以某種方式「瀏覽」正在運行的應用程序上的控件?

抱歉的長度 - 在此先感謝您的幫助! Bob

回答

0

最好的方法是讓你安裝組件,以便獲得Spy ++,這是我知道的最好的方法來獲取實際的類名稱。如果您沒有原始控件的源代碼,可能來自圖書館或Microsoft可能提供的一些標準ActiveX控件。

ATL類名可能是用於使用Microsoft Active Template Library(ATL)開發的控件,這是一個C++模板庫,它顯着簡化了C++中ActiveX控件和COM對象等的開發。

+0

因此Spy ++仍然是一個有效的工具?太好了 - 我會重新訪問安裝程序,看看爲什麼我沒有在2010年的實例中獲得它。是否有類似的獨立工具可以完成同樣的事情? - 無視 - 只是發現這個職位:http://stackoverflow.com/questions/1811019/i-want-spy-but-i-dont-have-visual-studio – 2010-07-11 17:38:25