我剛開始使用AutomationElement是因爲我們想對我們的自定義控件進行集成測試,而我認爲我應該使用AutomationElement。我應該使用AutomationPeer還是AutomationElement?或兩者?
我已經成功地創建一個窗口中有一個自定義的控制,並能成功獲得AutomationElements的窗口和控制
// Retrieve the View
System.Windows.Automation.Condition viewCondition = new PropertyCondition(AutomationElement.AutomationIdProperty, "MyTestView");
AutomationElement view = AutomationElement.RootElement.FindFirst(TreeScope.Children, viewCondition);
Assert.IsNotNull(view);
// Retrieve the CustomControl
System.Windows.Automation.Condition comboboxCondition = new PropertyCondition(AutomationElement.AutomationIdProperty, "MyCustomControl");
AutomationElement combobox = view.FindFirst(TreeScope.Children, comboboxCondition);
Assert.IsNotNull(comboboxCondition);
現在,我想要做的是使用,例如ValuePattern兩者。這就是我變得困惑的地方。
尋找信息,我在referencesource.microsoft.com搜索了WPF源代碼。我遇到了ComboboxAutomationPeer,它實現了IValueProvider,所以現在我很困惑。
我應該也實現MyCustomControlAutomationPeer實現IValueProvider,並且AutomationElement然後將使用ValuePattern嗎?或者我應該有MyCustomControl實現IValueProvider?
一個的AutomationPeer存在於您要自動化的應用程序。就像這個WPF應用程序中的ComboBox一樣。 AutomationElement是您在代碼中使用的一種,它使用*自動化修補這樣的WPF應用程序。這個代碼。 –
謝謝你解釋漢斯的區別。 – Diana