** ПОСТ ОБНОВЛЕНО **
Для тестирования системы и интеграции в среде Microsoft Dynamics мы используем кодированный пользовательский интерфейс Visual Studio 2010.Я неопытный пользователь Visual Studio, но у меня есть опыт автоматизации тестирования.
Всякий раз, когда VS-Coded-UI-тест печатает текст в полях редактирования, происходит изменение, которое должен выполнять один из символов, который долженбыть набранным опущено.Поле адреса типа Beverly Hills 90210
может легко стать Beverly ills 90210
, что нарушит мои тесты.Это случается примерно в 1 из 200 символов (образованное предположение).
Кто-нибудь испытывал это раньше?И где может быть проблема: скорость ввода VS, сломанный драйвер клавиатуры, сбой браузера, чтобы он не мог правильно получать ввод текста, что-то еще?
И есть ли возможность снизить скорость наборатест-драйвера в VS-кодированном интерфейсе?
ОБНОВЛЕНИЕ , 2012-05-24: Все еще не найдено решение.Сейчас я использую обходной путь, который уменьшает изменение сбоя, но он все еще не идеален.
Обход кода (да, он грязный):
// put this method in a base class or easy accessable component
protected void ExecuteWithRetry(Action method, int maxRetryCount = 2)
{
try
{
method();
}
catch (Exception)
{
if (maxRetryCount > 0)
{
ExecuteWithRetry(method, maxRetryCount - 1);
}
else
{
throw;
}
}
}
Всякий раз, когда я используюкусок кода, в котором установлено текстовое поле, я вызываю его с помощью этого метода:
UIMap.SetUserfieldsParams.EnterAddress = @"555 Sunset Boulevard";
UIMap.SetUserfieldsParams.EnterZIP = @"90210";
ExecuteWithRetry(UIMap.SetUserfields);
UPDATE , 2012-06-18: Кажется, это вызвано использованием олицетворения, которое мы используем,Пользователь, вошедший в наше веб-приложение, напрямую извлекается из сервера AD по имени пользователя, запустившего IE.Запустив IE с помощью олицетворения, мы можем проводить наши тесты с другими пользователями без (ручного) выхода из системы и входа в Windows.Мы используем олицетворение, используя Process.Start(ProcessStartInfo startInfo)
в пространстве имен System.Diagnostics.Process