gpt4 book ai didi

c# - 如何将浏览器 Window 类的实例从 [ClassInitialize] 方法传递给另一个非静态类

转载 作者:太空宇宙 更新时间:2023-11-03 13:10:12 24 4
gpt4 key购买 nike

在编写我的第一个编码 ui 大型程序时,我发现我搞砸了在应用程序中移动的方式。这表明它使我的程序变得非常慢,我的意思是乌龟慢哈哈。在编写了大部分程序并对性能感到非常失望之后,我发现了这一点。

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

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

  [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 并且我的所有其他测试方法将从它运行,这就是我第一次这样做的原因,但我不知道这是否仍然可行。感谢您的任何反馈。

最佳答案

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

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;
}

现在,我可以在我的 UIMap 中使用 GlobalVariables.Browser 对象作为所有新对象的父对象。

public HtmlControl MyButton
{
get
{
HtmlControl target = new HtmlControl(GlobalVariables.Browser);
target.SearchProperties[propName] = "blah";
return target;
}
}

关于c# - 如何将浏览器 Window 类的实例从 [ClassInitialize] 方法传递给另一个非静态类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29167946/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com