Я успешно реализовал поддержку кодированного интерфейса для моего пользовательского элемента управления в VS2010. Но когда я пытаюсь обновить эти проекты до VS2012, VS2013 или VS2015, произошло следующее исключение. Пожалуйста, найдите стек исключений трассировки ниже:Предоставление поддержки кодированного UI для VS2012,2013,2015
Пример кода:
if (uiTestControl.ControlType == ControlType.Table)
{
//To-Do
}
Исключение:
System.InvalidCastException was unhandled
HResult=-2147467262
Message=Invalid cast from 'System.String' to 'Microsoft.VisualStudio.TestTools.UITesting.ControlType'.
Source=mscorlib
StackTrace:
at System.Convert.DefaultToType(IConvertible value, Type targetType, IFormatProvider provider)
at System.String.System.IConvertible.ToType(Type type, IFormatProvider provider)
at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
at Microsoft.VisualStudio.TestTools.UITesting.UITestControl.GetPropertyInternal[T](String propertyName)
at Microsoft.VisualStudio.TestTools.UITesting.UITestControl.get_ControlType()
at CustomControl.GetPropertyNames(UITestControl uiTestControl) in d:\Coded_UI_Source\Src\CustomExtensionProvider\CustomPropertyProvider.cs:line 94
at Microsoft.VisualStudio.TestTools.UITesting.ALUtility.GetProperties(UITestPropertyProvider provider, UITestControl uiControl, UITestPropertyAttributes attributes, UITestPropertyAttributes ignoreAttributes)
at Microsoft.VisualStudio.TestTools.UITesting.UITestControl.GetReadableAndAssertablePropertyNames()
at Microsoft.VisualStudio.TestTools.CodedUITest.Controls.UIControlLocator.UIControlFinder.FetchProperties(UITestControl element)
at Microsoft.VisualStudio.TestTools.CodedUITest.Controls.UIControlLocator.UIControlFinder.PopulateUITestControlDetails(UITestControl element, UIControlDetails uiControlDetails)
at Microsoft.VisualStudio.TestTools.CodedUITest.Controls.UIControlLocator.UIControlFinder.CaptureControl(UITestControl element)
at Microsoft.VisualStudio.TestTools.CodedUITest.Controls.UIControlLocator.UIControlFinder.PlaybackThreadproc()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:
Пожалуйста, помогите мне решить эту проблему, а также, пожалуйста, дайте мне знать, является ли я необходимо что-либо сделать для поддержки VS2012, 2013 и 2015 годов.
Исключение явно говорит о том, что вы не можете сравнивать 'string' с' ControlType'. Вы уверены, что то, что у вас есть в 'uiTestControl.ControlType', является стандартным UITestControl со стандартным' ControlType' типа 'ControlType'? –
Моя проблема в том, что этот код отлично работает в VS2010, но он не работает в 2012,2013,2015, и он выдает исключение. –