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!
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? –
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. –
Merci Mark. Dans mon cas, j'ai ajouté screenResult.SearchConfigurations.Add (SearchConfiguration.AlwaysSearch); –