2016-09-22 9 views
0

Я с ума схожу с проблемой, которую я обнаружил при выполнении Visual Studio Coded UI Test. Сценарий выглядит следующим образом. я записал кодированные тесты пользовательского интерфейса, выполните следующие действия в вебе-приложениях (Microsoft Dynamics CRM 2011):Coded UI Test - установить свойство пользовательского интерфейса, которое не возвращается (висит на неопределенное время)

  • Вход в приложение
  • Перейдите на страницу
  • На странице установить выбранное значение из html combobox

Тест может выполнить все эти шаги без проблем, даже выбрав значение в выпадающем списке. В веб-приложении есть часть Javascript, которая выполняется, когда выбранный элемент изменяется. , если выбрано одно из значений, пользователю сообщается предупреждающее сообщение, и приложение установит выбранный элемент в значение по умолчанию!

Javascript код выглядеть следующим образом:

switch (Xrm.Page.getAttribute("status").getValue()) { 
    case 3: //Authorised 
     alert("Please use the method XPTO to update the record status to Authorised!"); 
     Xrm.Page.getAttribute("status").setValue(1); 
     Xrm.Page.getControl("tatus").setFocus(true); 
     return false; 

Метод испытания UI, который выполняет изменения в выпадающий список выглядит следующим образом:

/// <summary> 
    /// Select a value in the Status dropdown box 
    /// </summary> 
    public void SelectStatus() 
    { 
     #region Variable Declarations 
     HtmlComboBox uIStatusComboBox = this.UIHttpsappWindow200.UIModuleUITEDocument5.UIWorkplaceDashboardsFrame.UIModuleUITEDocument.UIStatusComboBox; 

     // Select 'Authorised' in 'Status' combo box 
     uIStatusComboBox.SelectedItem = this.SelectStatus_SPParams.UIStatusComboBoxSelectedItem; 

    } 

Метод испытания может изменить значение в поле со списком, и пользователю отображается предупреждающее сообщение. Однако эта часть кода uIStatusComboBox.SelectedItem = this.SelectStatus_SPParams.UIStatusComboBoxSelectedItem; никогда не возвращается, и тест просто зависает там до таймаутов!

У меня нет идеи, как работать вокруг этой проблемы! Я думал, что, может быть, проблема может заключаться в том, что у нас есть код javascript, который выполняется после того, как предупреждение отображается пользователю. Я сменил JS так, что предупреждающее сообщение - последнее, что нужно отобразить, но оно также не помогло!

Я также заметил, что если я нажму Ok на предупреждающем сообщении, пройдите тест!

Если я выберу другое значение, которое не запускает какой-либо JS-тест, также Pass!

Есть ли у кого-нибудь идеи по этой проблеме?


Edit 1:

я заметил другую вещь, я могу использовать объект BrowserWindow отправить сценарий JS в браузере. Если я попытаюсь создать предупреждающее сообщение, вызов также блокируется, пока я не нажмем кнопку «ОК», на предупреждение!

BrowserWindow bw = BrowserWindow.Locate("My window"); 
bw.ExecuteScript("alert('This is just a simple alert.');"); 

Операция ExecuteScript также блокируется, пока я не нажму кнопку OK! Это кажется очень странным!

ответ

0

Я считаю, что нашел обходное решение. Я прибегая к помощи, чтобы найти что-нибудь, что могло бы помочь мне с этим вопросом, и я в конечном итоге найти этот вопрос на StackOverflow Coded ui test - Select an item from a combobox without using mouse coordinates

Я стараюсь, чтобы выбрать один и тот же элемент в раскрывающемся без использования свойства «SelectedItem» элемента HtmlComboBox. Я стараюсь использовать клавиатуру, чтобы выбрать элемент в раскрывающемся списке, первый я нажимаю на раскрывающийся, а затем я использую клавишу Вниз и клавишу ввода, чтобы выбрать элемент, который я хочу:

public void SelectStatus_SP(string SelectedItem) 
    { 
     #region Variable Declarations 
     HtmlComboBox uIStatusComboBox = this.UIHttpsappWindow200.UIpopupUITEDocument5.UIWorkplaceDashboardsFrame.UIpopupUITEDocument.UIStatusComboBox; 
     #endregion 

     Mouse.Click(uIStatusComboBox); 
     Keyboard.SendKeys(uIStatusComboBox, "{Down}{Down}{Enter}", ModifierKeys.None); 
    } 

В моем случае элемент, который я хочу выбрать, является третьим, поэтому я опускаюсь 2 раза, а затем нажимаю на элемент, который я хочу выбрать.

Это обходное решение не так хорошо, потому что, если элемент меняет положение, я выберу worng! Но это было единственное, что я получил для теста, чтобы не быть запасом в этой части!

Интересно, имел ли кто-либо подобную проблему. Потому что для меня это похоже на ошибку в движке Coded UI Test, это не делает никакой проверки для проверки, пока он не закрыт!