我即將向 MFC 應用程式(使用 Visual Studio 2019 創建)添加自動 GUI 測驗。在識別應用程式中的各種子視窗時,AutomationId 似乎很有用。
當我使用 Microsoft 的“Visual UIA 驗證”工具檢查應用程式時,我注意到應用程式中的大多數子視窗都有 AutomationId。
我擔心的是,如果我有多個視窗類實體并且 ID 可能會隨著時間而改變,它們可能不是唯一的。
我的問題是
- AutomationIds 來自哪里?
- 我可以改變它們嗎?
- 我可以依靠它們保持不變嗎?
uj5u.com熱心網友回復:
自動化 ID 是從 UIA(用戶界面可訪問性)獲得的,您通常應該能夠指望它們在同一程式的運行中是相同的,但請注意,新版本可能會或可能不會“相同” .
來自 UIA 檔案:
標識 AutomationId 屬性,該屬性是包含自動化元素的 UI 自動化識別符號 (ID) 的字串。如果可用,則元素的 AutomationId 在應用程式的任何實體中都必須相同,無論本地語言如何。該值在同級元素中應該是唯一的,但在整個桌面中不一定是唯一的。例如,應用程式的多個實體或 Microsoft Windows 資源管理器中的多個檔案夾視圖可以包含具有相同 AutomationId 屬性的元素,例如“SystemMenuBar”。盡管始終建議支持 AutomationId 以獲得更好的自動化測驗支持,但此屬性不是強制性的。在受支持的情況下,AutomationId 可用于創建不管 UI 語言如何運行的測驗自動化腳本。客戶不應對其他應用程式公開的 AutomationId 值做出任何假設。不保證 AutomationId 在應用程式的不同版本或構建中保持穩定。
uj5u.com熱心網友回復:
如果我沒記錯的話,自動化 id 只是視窗子控制元件的控制元件 id。
這是為從資源(.rc 檔案)加載的對話框中的控制元件自動設定的。也可以在運行時為非對話框控制元件設定控制元件 ID,方法是為CreateWindowHMENU中的引數傳遞一個數字。所以是的,您通常可以假設控制元件 ID 是靜態的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/449662.html
