如何使用 C# 打开浏览器并在 Visual Studio 2017 年的编码 UI 测试之间保持打开状态

How to open a browser and keep it open between coded UI tests in Visual Studio 2017 using C#

我正在尝试进行一些编码 UI 测试,以帮助自动化我工作的公司的一些手动测试。我对 visual studio 的 CUIT 部分很陌生,但我觉得我正在弄明白。但是,我在其他测试 运行 之前关闭测试线程时遇到问题。

所以我想让这个测试完全自动化,因为所有开发人员需要做的就是单击 "Run all",它们都会自动 运行。我遇到的问题是第一个测试需要启动 Internet Explorer,转到网站并登录该网站。其余测试基于登录系统。然而,在第一个测试之后,浏览器关闭并与第一个测试方法一起被杀死。

任何关于这方面的建议都很好,我已经在网上搜索了一些答案,但很多都是针对 visual studio 的非常旧版本的,而我试过的那些都不起作用。

谢谢。

编辑:所以在每个 class 中,可以说 "CodedUITest1.cs",我可以在 class 中的每个 [测试方法] 中使用相同的浏览器(如有人在下面建议)。我遇到的问题是,如果我想要一个不同的测试 class 来测试不同的功能,"CodedUITest2.cs",浏览器将在第一个 class 完成其测试时关闭。

如果我没有正确理解你的问题,那么这个 code segment 应该适合你:

BrowserWindow window;

    [TestMethod]
    public void Method1()
    {
        window = BrowserWindow.Launch(new Uri("http://www.bing.com"));
        window.CloseOnPlaybackCleanup = false;
    }

    [TestMethod]
    public void Method2()
    {
        window = BrowserWindow.Locate("Bing");
        window.CloseOnPlaybackCleanup = false;
    }

    [TestMethod]
    public void Method3()
    {
        window = BrowserWindow.Locate("Bing");
    }

在阅读了这个问题的新信息后,我对代码进行了一些测试。如果您想在 CodeUITes1.cs 和 CodedUITest2.cs 之间保持浏览器打开,那么以下代码段可能会对您有所帮助。取自以下link:https://blogs.msdn.microsoft.com/devops/2012/11/08/coded-ui-test-why-does-application-close-after-each-test-in-visual-studio-2012/

文件:CodedUITest1.cs

public class CodedUITest1
    {
        static BrowserWindow browserWindowInstance = null;
        public void LoadLocalHost()
        {
            if (browserWindowInstance == null)
            {
                browserWindowInstance = BrowserWindow.Launch(new System.Uri("YourWebSiteAddress"));

            browserWindowInstance.CloseOnPlaybackCleanup = false;
            browserWindowInstance.Maximized = !browserWindowInstance.Maximized;
        }
        else
        {
            browserWindowInstance.Maximized = !browserWindowInstance.Maximized;
        }
    }

[TestMethod]
    public void CodedUITestMethod1()
    {
        LoadLocalHost();
        // To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items.
        this.UIMap.ClickNewsAndEvents();
    }

CodedUITest2.cs 文件:

 [TestMethod]
    public void CodedUITestMethod2()
    {
        CodedUITest1 obj1 = new CodedUITest1();
        obj1.LoadLocalHost();
        // To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items.
        this.UIMap.ClickNewsPage();

    }

您可以添加更多 CodedUITest classes。只需在 CodedUITest2 class 的代码示例中创建一个新对象(如 obj1),然后使用位于 CodedUITest1.class 中的 LoadLocalHost() 方法从任何后续 classes。希望这能解决您的问题。