簡體   English   中英

記錄新測試的編碼UI測試覆蓋了UIMap.Designer.cs的更改

[英]Coded UI Test recording new test overwrites UIMap.Designer.cs changes

我正在記錄編碼UI測試以成功登錄。 拉起“編碼的UI測試構建器”后,我記錄了以下步驟。

  1. 啟動exe
  2. 單擊觸發頁面上某些動畫的表格,然后在5-6秒鍾后,我可以選擇“注冊”或“登錄”
  3. 我單擊“登錄”(uILoginButton)按鈕並成功登錄。

當我嘗試回放此測試時,它在第3步崩潰,提示“找不到名為'btnLogin'的UI元素”

因此,我導航到UIMap.Designer.cs文件,並在單擊按鈕之前在代碼的下面添加了行。

uILoginButton.WaitForControlExist();

我在“ UIMap.Designer.cs”中記錄的方法看起來像這樣

/// <summary>
/// DoLogin
/// </summary>
public void DoLogin()
{
    #region Variable Declarations
    WpfButton uILoginButton= this.UIMPortPodGUIWindow.UIItemCustom7.UIContinueButton;
    #endregion
    uILoginButton.WaitForControlExist(100);

    // Click 'Continue' button
    Mouse.Click(uILoginButton, new Point(191, 42));
}

在此之后,我播放了此測試,並很高興看到一切正常。 然后,我開始記錄第二個測試,完成記錄后,我意識到記錄已經覆蓋了我以前對UIMap.Designer.cs更改,即缺少以下行

uILoginButton.WaitForControlExist();

我知道它應該放在'UIMap.cs'中,但不知道如何在兩個類中部分聲明DoLogin()方法。

哪個是添加我們的自定義代碼的最佳位置?

切勿將代碼放在.Designer.cs除非您不在乎它會隨機丟失。

在這種情況下,我通常要做的是從自動生成的DoLogin中復制代碼,並在具有自定義步驟的UIMap.cs (不是UIMap.Designer.cs )中創建自己的方法。

public partial class UIMap
{
    public void DoLoginWithWait()
    {
        #region Variable Declarations
        WpfButton uILoginButton = this.UIMPortPodGUIWindow.UIItemCustom7.UIContinueButton;
        #endregion
        uILoginButton.WaitForControlExist(100);

        // Click 'Continue' button
        Mouse.Click(uILoginButton, new Point(191, 42));
    }
}

程序將根據您所處的確切情況生成空的UIMap.cs 。在記錄新步驟期間, UIMap.cs不會被覆蓋,因此您可以安全地將代碼放入其中。


編輯

經過一番摸索之后,我發現有一個按鈕可以使此操作更加容易。 UIMap.uitest編輯器中,單擊 在此處輸入圖片說明 按鈕(或Ctrl + Alt + C),這會將方法從設計器中移出並將其放入UIMap.cs文件,然后您可以安全地編輯該方法,而不必擔心重建的設計器文件會覆蓋您的更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM