如何使用 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。希望这能解决您的问题。
我正在尝试进行一些编码 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。希望这能解决您的问题。