2010-11-30 55 views
2

J'ai écrit ce code:UITestControlNotAvailableException: Le contrôle n'est pas disponible ou non valide

int timeOut = 300000; //milliseconds 
string _displayTextProp = "DisplayText"; 

WpfText screenResult = MainWindow.UITableStatusControlCustom.ScreenResultLabelValue; 

screenResult.WaitForControlExist(timeOut); 
screenResult.WaitForControlPropertyNotEqual(_displayTextProp, null, timeOut); 
screenResult.WaitForControlPropertyNotEqual(_displayTextProp, "0", timeOut);// (1) 

Dans ce (1) méthode que j'ai obtenu exception UITestControlNotAvailableException

Méthode d'essai a lancé exception: Microsoft .VisualStudio.TestTools.UITest.Extension.UITestControlNotAvailableException: Le contrôle n'est pas disponible ou n'est pas valide. --- > System.Runtime.InteropServices.COMException: Exception de HRESULT: 0x80042002 à System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal (Int32 errorCode, IntPtr errorInfo) à System.Runtime.InteropServices.Marshal.ThrowExceptionForHR (Int32 errorCode) à MS.Internal.Automation.UiaCoreApi.CheckError (Int32 hr) à MS.Internal.Automation.UiaCoreApi.UiaGetPropertyValue (SafeNodeHandle hnode, Int32 PropertyID, objet valeur &) à System.Windows.Automation.AutomationElement.GetCurrentPropertyValue (AutomationProperty propriété, Boolean ignoreDefaultValue) à System.Windows.Automation.AutomationElement.GetCurrentPropertyValue (propriété AutomationProperty) à Microsoft.VisualStudio.TestTools.UITest.Exte nsion.Uia.UiaUtility.GetAutomationPropertyValue [T] (élément AutomationElement, propriété AutomationProperty) --- Fin de la trace de pile d'exception interne --- à Microsoft.VisualStudio.TestTools.UITest.Extension.Uia.UiaUtility.MapAndThrowException (SystemException e , Élément IUITechnologyElement) à Microsoft.VisualStudio.TestTools.UITest.Extension.Uia.UiaUtility.GetAutomationPropertyValue [T] (élément AutomationElement, propriété AutomationProperty) à Microsoft.VisualStudio.TestTools.UITest.Extension.Uia.UiaElement.GetAutomationPropertyValue [T ] (AutomationProperty automationProperty) à Microsoft.VisualStudio.TestTools.UITest.Extension.Uia.UiaElement.GetRequestedState (AccessibleStates requestedState) à Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyElement.IsState (élément IUITechnologyElement , État AccessibleStates) à Microsoft.VisualStudio.TestTools.UITesting.UITestControl.EnsureValid (Boolean waitForReady, REFETCH Boolean) à Microsoft.VisualStudio.TestTools.UITesting.UITestControl.GetPropertyValue (String propertyName) à Microsoft.VisualStudio.TestTools.UITesting .UITestControl.GetProperty (String propertyName) à Microsoft.VisualStudio.TestTools.UITesting.UITestControl. < > c_ DisplayClass4. <WaitForControlPropertyNotEqual> b _3 (UITestControl ctrl) à Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForCondition [T] (T conditionContext, prédicat 1 conditionEvaluator, Int32 millisecondsTimeout) at Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlCondition(Predicate 1 conditionEvaluator, Int32 millisecondsTimeout) à Microsoft.VisualStudio.TestTools.UITesting.UITestControl. WaitForControlPropertyNotEqual (String propertyName, objet propertyValue, Int32 millisecondsTimeout)

Quelle est la raison peut être un tel comportement?

Merci d'avance!

Répondre

2

Comme par this link:

Cette exception est levée lorsque le cadre de test d'interface utilisateur tente d'accéder à un élément d'interface utilisateur qui est plus disponible ou ne peut pas être consulté. Vous pouvez donc disposer d'un élément ou ne plus avoir accès à l'élément et essayez maintenant d'y accéder. Potentiellement, vous n'avez pas réussi à initialiser l'un des AutomationElements?

+0

Merci Mark. "Vous avez donc peut-être disposé d'un objet, ou n'avez plus accès à l'élément et vous essayez maintenant d'y accéder" Comment puis-je utiliser pour résoudre ce problème? –

+0

Vous devez regarder les objets que vous avez créés - assurez-vous de les avoir créés lorsque vous essayez d'y accéder. Si cela vous aide, mettez d'abord des contrôles pour voir si les objets ont été initialisés et sont! = Null. –

+0

Merci Mark. Dans mon cas, j'ai ajouté screenResult.SearchConfigurations.Add (SearchConfiguration.AlwaysSearch); –