我已谷歌搜索和綁定和Yahoo'd甚至Dogpiled。我發現主要是Python,PHP和Ruby不適用。只有一個項目出現(從2012年),但它沒有答案:unit test fails in r# but passes in mstestC#MSTEST編碼的UI自動測試失敗,雖然完全相同的手動測試通過
我有兩個測試,完全按照記錄工作。首先,當測試到達Submit按鈕時,該應用程序表示該頁面未準備好提交,並且Submit按鈕保持禁用狀態。另一方面,提交按鈕已啓用,但該頁面什麼都不做。當我使用相同的數據(或使用不同的數據)手動(使用鍵盤和鼠標)執行完全相同的操作時,兩個頁面上的提交按鈕都可以工作,並且兩個頁面都可以處理。
我已經運行測試點提交按鈕被點擊,但沒有任何反應,當我手動點擊它們,無論是。我已經從一個領域標籤到下一個領域,認爲它可能是一個不開火的事件,但不是。
這是我找到的:如果自動打開頁面,提交按鈕將不起作用。如果自動輸入或選擇頁面上的一個項目,提交按鈕將不起作用。但是:如果我在頁面打開之前運行自動化點,那麼如果我點擊打開頁面並手動鍵盤和鼠標條目,然後手動鼠標單擊提交按鈕,它將工作。
測試記錄在MTM中,並導入到Visual Studio 2012中。我嘗試重新導入它們,並使用Visual Studio手動記錄了這些步驟。
我們現在認爲測試軟件(MSTest)和頁面中的JavaScript之間存在一些意想不到的相互作用。我們編寫了(編碼UI)應用程序中的另外11個頁面。所有11個應用程序頁面使用相同的基本體系結構和相同的控件。我們測試人員認爲JavaScript可能會被破壞(缺少大括號,缺少一對括號,缺少分號,在錯誤的地方出現分行,某些事情)。
這些測試絕對沒有任何獨特之處。他們是我編寫過的最簡單的測試。其中一個只有四個輸入字段。我沒有手動編碼任何東西; UIMap.cs文件是空的。這些都在基於UIMap.UITest文件的UIMap.Designer.cs中。
這是我的編碼的UI測試類的顯著部分(可變設置和的try-catch邏輯忽略):
try
{
User.OpenBrowser(TestContext);
this.UIMap.ClickFeesButtonInSecondaryMenu();
this.UIMap.ClickAddPaymentButton();
this.UIMap.OpenYearDropdownAndSelect2016();
this.UIMap.Type1234InCheckNumber();
this.UIMap.Type275InTotalAmount();
this.UIMap.SelectBusinessFees();
this.UIMap.SelectInstructorFees();
this.UIMap.ClickSubmitButton();
User.CloseBrowser(TestContext);
}
catch . . . .
這是我的UIMap.Designer.cs的一部分:
public void ClickFeesButtonInSecondaryMenu()
{
#region Variable Declarations
HtmlHyperlink uIFeesHyperlink = this.UIInternetExplorerWindow.UIDocument.UIFeesHyperlink;
#endregion
// Click 'Fees' link
Mouse.Click(uIFeesHyperlink, new Point(22, 21));
}
public void ClickAddPaymentButton()
{
#region Variable Declarations
HtmlHyperlink uIAddPaymentHyperlink = this.UIInternetExplorerWindow.UIDocument1.UIAddPaperPaymentHyperlink;
#endregion
// Click 'Add Payment' link
Mouse.Click(uIAddPaymentHyperlink, new Point(84, 15));
}
public void OpenYearDropdownAndSelect2016()
{
#region Variable Declarations
HtmlHyperlink uIItem2017Hyperlink = this.UIFeeInternetExplorerWindow.UIFeeDocument.UIItem2017YearYearPane.UIItem2017Hyperlink;
HtmlDiv uIItem2016Pane = this.UIFeeInternetExplorerWindow.UIFeeDocument.UIItem2016Pane;
#endregion
// Click '2017' link
Mouse.Click(uIItem2017Hyperlink, new Point(149, 20));
// Click '2016' pane
Mouse.Click(uIItem2016Pane, new Point(124, 3));
}
public void Type1234InCheckNumber()
{
#region Variable Declarations
HtmlEdit uICheckNumberEdit = this.UIFeeInternetExplorerWindow.UIFeeDocument1.UICheckNumberEdit;
#endregion
// Type '1234' in 'Check Number' text box
uICheckNumberEdit.Text = this.Type1234InCheckNumberParams.UICheckNumberEditText;
}
。 。 。依此類推,直到你到達。 。 。
public void ClickSubmitButton()
{
#region Variable Declarations
HtmlInputButton uISubmitButton = this.UIFeeInternetExplorerWindow.UIFeeDocument1.UISubmitButton;
#endregion
// Click 'Submit' button
Mouse.Click(uISubmitButton, new Point(27, 17));
}
我只一直在做C#MSTEST編碼的UI僅僅過了一年,但我在這裏有萬噸以上的經驗比我有其他三個自動化工程師,而這個問題是新的全部。我們已經看過我們能想到的所有東西,但沒有快樂。有沒有人看過這個?什麼導致這種行爲?最重要的是,有沒有修復?
該按鈕是默認啓用還是啓用時填寫字段?換句話說:當頁面加載時,你可以立即點擊那個按鈕? – rene
在所有頁面編輯通過之前,在一個頁面上,此按鈕會被禁用。要明確,測試運行時總是禁用。更清楚的是,問題是測試運行時總是禁用它。在另一頁上,只要頁面加載就會啓用它。它什麼都不做。 – Barniferous
您可以嘗試在'Mouse.Click'之前執行uisubmitButton.SetFocus();' – rene