2

在编写我的第一个编码 ui 的大程序时,我发现我搞砸了我在应用程序中移动的方式。这体现在让我的程序真的很慢,我的意思是乌龟慢哈哈。在编写了大部分程序并且对性能非常失望之后,我发现了这一点。

问题是我没有在我的课程之间传递我的浏览器实例,并且严格依赖我应该在我创建的 UI 地图上说(如果有人想知道,我可以详细介绍)。当我开始这个项目时,我知道我必须这样做,但是因为我创建了一个 [ClassInitialize] 来为我的所有测试方法启动浏览器。我启动浏览器的区域我无法通过它,因为它是静态的,这导致我在如何构建 UI 地图等方面做了很多不必要的后果。

目前我在想我要么需要将其更改为测试初始化​​并在我的测试方法中启动我的浏览器,要么我想的另一种方式是通过调用我的第一个来传递我的浏览器对象的实例我使用的类。这是我目前拥有的以下代码,我想就最佳方法提出一些意见。

  [ClassInitialize]
    public static void GoToHomePage(TestContext context)
    {
        Playback.Initialize();

        MyCodedUITests.StartTest();
        //Playback.PlaybackSettings.MatchExactHierarchy = true;
       // //dev
       //VyguideWindow = BrowserWindow.Launch(new Uri(@"http://ThesiteIlaunch"));
        //prod
        VyguideWindow = BrowserWindow.Launch(new Uri(@"http://ThesiteILauch"));
        proc = VyguideWindow.Process;
        VyguideWindow.CloseOnPlaybackCleanup = false;
        VyguideWindow.Maximized = true;
        HomePage passWnd = new HomePage();
        passWnd.PassBrows(VyguideWindow);

    }

    public BrowserWindow PassBrows(BrowserWindow window)
    { 
       BrowserWindow myBrowser  = window;

       return myBrowser;
    }

请给我一些关于最佳实践的反馈,或者我是否应该使用测试初始化​​。最初的想法是我将使用 classinitialize 并且我的所有其他测试方法都将从它运行,这就是我第一次这样做的原因,但我不知道这是否仍然可行。感谢您的任何反馈。

4

1 回答 1

1

我有一个静态类,用于在整个测试过程中必须使用的变量。所以,我在这里声明浏览器窗口:

public static class GlobalVariables
{
    public static BrowserWindow Browser;
}

然后在我的初始化中实例化它。

[ClassInitialize]
public void ClassInitialize()
{
    Playback.Initialize();
    MyCodedUITests.StartTest();

    // dev
    //GlobalVariables.Browser = BrowserWindow.Launch(new Uri(@"http://ThesiteIlaunch"));

    // prod
    GlobalVariables.Browser = BrowserWindow.Launch(new Uri(@"http://ThesiteILauch"));


    GlobalVariables.Browser.CloseOnPlaybackCleanup = false;
    GlobalVariables.Browser.Maximized = true;
}

现在,我可以将GlobalVariables.BrowserUIMaps 中的对象用作所有新对象的父对象。

public HtmlControl MyButton
{
    get
    {
        HtmlControl target = new HtmlControl(GlobalVariables.Browser);
        target.SearchProperties[propName] = "blah";
        return target;
    }
}
于 2015-03-20T14:35:13.113 回答