我對執行Visual Studio編碼的UI測試時發現的問題感到瘋狂。 該場景如下。 我記錄了做一個Web應用程序下面的步驟編碼的UI測試(的Microsoft Dynamics CRM 2011):編碼UI測試 - 將UI屬性設置爲不返回(無限期懸掛)
- 登錄到應用程序
- 導航到一個頁面
- 在頁面設置選擇的值的html組合框
測試能夠做到所有這些步驟沒有問題,即使在組合框中選擇了值。 Web應用程序具有一段JavaScript,當選定的項目發生更改時會執行該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;
的這部分永遠不會返回,測試只是在那裏掛起,直到它超時!
我沒有ideia如何工作圍繞這個問題!我在想,也許這個問題可能是因爲我們有向用戶顯示警報之後執行的JavaScript代碼。我改變了JS,以便提醒消息是最後顯示的東西,但它也沒有幫助!
我還注意到,如果我在警告消息上單擊確定,測試通過!
如果我選擇其他值不觸發任何JS測試也通過!
有沒有人有任何關於這個問題的想法?
編輯1:
我注意到另一件事,我可以使用BrowserWindow對象發送一個JS腳本的瀏覽器。如果我嘗試創建一條警報消息,則該通話也會被阻止,直到我點擊確定按鈕上的警報!
BrowserWindow bw = BrowserWindow.Locate("My window");
bw.ExecuteScript("alert('This is just a simple alert.');");
ExecuteScript語句也被阻止,直到我點擊OK按鈕! 這看起來很奇怪!