Я работаю в команде тестирования, и мы пишем тесты для Word Plugin. У нас есть метод начального слова, который мы повторяем перед каждым вашим тестом. Он отлично работает для отдельных тестов, но когда мы помещаем их в упорядоченный тест, возникает исключение. Вот что у нас было раньше:
if (!Playback.IsInitialized)
{
Playback.Initialize();
}
// Launch '%ProgramFiles%\Microsoft Office\Office12\WINWORD.EXE'
ApplicationUnderTest wINWORDApplication = ApplicationUnderTest.Launch(exePath, altPath);
if (killAllPreviousWordProcesses == true)
{
wINWORDApplication.Maximized = true;
}
После просмотра мы нашли сообщение, в котором предлагалось использовать Process.Start () вместо ApplicationUnderTest. Это был код, который они предложили.
Process np = Process.Start(@"C:\Windows\System32\Notepad.exe");
while (np.MainWindowHandle == IntPtr.Zero)
{
System.Threading.Thread.Sleep(100);
}
//This line throws the error
WinWindow npWindow = UITestControlFactory.FromWindowHandle(np.MainWindowHandle) as WinWindow;
MessageBox.Show(npWindow.Name);
ApplicationUnderTest aut = ApplicationUnderTest.FromProcess(np);
MessageBox.Show(aut.Title);
Мы изменили его на использование Word (заменив строку на «WINWORD», мы также опробовали путь), но теперь мы получаем исключение NullReferenceException при каждом запуске метода. Я проверил все на ноль и убедился, что np.MainWindowHandle не был нулевым, но он все еще дает мне ошибку. Любые идеи, чтобы исправить это или альтернативные предложения?
StackTrace:
at Microsoft.VisualStudio.TestTools.UITest.Playback.ScreenElement.FindFromWindowHandle(IntPtr windowHandle)
at Microsoft.VisualStudio.TestTools.UITesting.UITestControl..ctor(IntPtr windowHandle)
at Microsoft.VisualStudio.TestTools.UITesting.UITestControl.FromWindowHandle(IntPtr windowHandle)
at Microsoft.VisualStudio.TestTools.UITesting.UITestControlFactory.FromWindowHandle(IntPtr windowHandle)
at Common.BaseUIMapClasses.BaseUIMap.startWord(Boolean killAllPreviousWordProcesses, Boolean maximizeWord, String exePath, String altPath) in C:\Source1\Common\BaseUIMap.cs:line 170