3

我正在为 Web 应用程序使用 Visual Studio 2012 Coded UI 测试。我有一个登录应用程序的测试,该应用程序启动浏览器,找到登录对话框,输入凭据,然后单击确定。我有一个断言,它在登录后检查正确的 url。此测试似乎运行正常。我的问题是它在测试运行后关闭了浏览器。我需要保持浏览器打开,这样我才能运行序列中的下一个测试。我该怎么做呢?

目前,我的 [TestCleanup()] 部分中没有任何内容。我假设我正在寻找的东西在这里,但到目前为止,我还没有很幸运地弄清楚它应该是什么。

4

3 回答 3

2

我没有找到此解决方案的原始来源:(您可以使用如下所示的方法。此方法需要在 TestSetup 中调用。还声明类型 BrowserWindow 的类级别变量 _browserWindow

private void SetBrowser()
    {
        if(_browserWindow == null)
        {
            BrowserWindow.CurrentBrowser = "ie";
            _browserWindow = BrowserWindow.Launch("http://www.google.com");
            _browserWindow.CloseOnPlaybackCleanup = false;
           _browserWindow.Maximized = !_browserWindow.Maximized;
        }
        else
        {
            BrowserWindow.CurrentBrowser = "ie";
            _browserWindow = BrowserWindow.Locate("Google");
           _browserWindow.Maximized = !_browserWindow.Maximized;
        }

    }
于 2013-02-23T15:10:53.240 回答
0

好的,所以我需要做的是在每次测试之前启动和登录。我想我想要的是先运行浏览器和登录测试,然后是每个额外的测试。在阅读了更多之后,我决定我真正想要的是将这个逻辑作为每个测试的初始化代码运行。我通过将此代码添加到在 Visual Studio 2012 中启动编码的 ui 项目时生成的默认 [TestInitialize()] 来完成此操作。

于 2013-01-21T19:43:35.567 回答
0

我发现以下方法适用于 Visual Studio 2015 中的数据驱动编码 UI 测试。

您将需要使用 [ClassInitialize] 并打开浏览器并根据 [TestMethod] 开始的位置引导它。

在测试类中的所有方法都执行完毕后,使用[ClassCleanup]释放资源。

您可以在使用 [TestInitialize] 初始化类后重定向不同的测试方法,并使用 [TestCleanup] 清理测试。但是要小心这些,因为它们会在每种测试方法中发生,如果它关闭您的浏览器实例,您的后续测试将失败。

private static BrowserWindow browserWindow = null;

[ClassInitialize]
public static void ClassInitialize(TestContext context)
{
    Playback.Initialize();
    browserWindow = BrowserWindow.Launch(new Uri("http://198.238.204.79/"));          
}

[ClassCleanup]
public static void TestCleanup()
{
    browserWindow.Close();
    Playback.Cleanup();
}
于 2016-07-25T23:16:06.830 回答