Как переключиться с Microsoft Word на браузер Firefox (уже запущенный) с помощью Microsoft Coded UI?

Я использую Microsoft Coded UI 2012 для автоматизации веб-приложения. Для этой цели я использую dll Selenium WebDriver. Мои требования таковы: 1. Запустите Firefox. 2. Запустите Microsoft Word. 3. Введите некоторые значения в Microsoft Word. 4. Вернитесь в Firefox. (Здесь он не работает) 5. Сделайте какую-нибудь операцию в Firefox.

Пожалуйста, найдите фрагмент кода, который используется ниже:

Driver driverObj = new Driver();
driverObj.InitiateDriver(); //creates a new Firefox driver
String strWindowHandle = driverObj.driver.WindowHandles.ToString(); //getting the windows handle of the firefox browser
this.UIMap.RecordedMethod3(); //recorded method to interact with Microsoft Word
driverObj.driver.WindowHandles.IndexOf(strWindowHandle);//switches the handle back to Firefox
driverObj.GoogleSearch();//performs operation on firefox
this.UIMap.RecordedMethod4();//Recorded method to close Microsoft word.

Теперь проблема, с которой я сталкиваюсь, заключается в следующем: когда запускается слово Microsoft, оно не переключается обратно в окно Firefox. Однако после изменения дескриптора окна операции в окне Firefox выполняются в фоновом режиме. Я хочу отображать выполняемые операции на переднем плане, переключаясь в окно Firefox. Закодированный пользовательский интерфейс не может этого сделать. Однако тест проходит, поскольку все действия выполнены.


person Pankaj Sarmah    schedule 14.02.2015    source источник
comment
Вы уверены, что метод IndexOf в WindowHandles действительно выполняет действие в пользовательском пространстве? Обычно метод IndexOf просто возвращает Int32 (индекс элемента в массиве или списке) без выполнения каких-либо действий.   -  person Sam Axe    schedule 14.02.2015


Ответы (2)


Вы можете использовать SetForegroundWindow чтобы активировать окно firefox и поместить его поверх, если дескриптор действителен:

[DllImport("user32.dll")]
static extern bool SetForegroundWindow(IntPtr hWnd);
person Saleh Yusefnejad    schedule 14.02.2015
comment
Привет, спасибо за ваш ответ. Но это работает так же, как следующий фрагмент кода в приведенном выше фрагменте кода: driverObj.driver.WindowHandles.IndexOf(strWindowHandle); Окно firefox по-прежнему не видно на переднем плане. Все операции выполняются в фоновом режиме. @Салех Юсефнежад - person Pankaj Sarmah; 14.02.2015

Поскольку обычно codedui устанавливает фокус на элементе управления, с которым он работает, попробуйте использовать метод SetFocus() в окне Firefox, которое вы хотите отобразить, или щелкнув его мышью, поскольку эту операцию нельзя выполнить в скрытом окне.

person barakcaf    schedule 23.02.2015