我有一个编写的UI测试方法:
public void MyTestMethod()
{
string baseUrl = "www.google.com";
GlobalVariable.browser = BrowserWindow.Launch(new System.Uri(baseUrl));
GlobalVariable.browser.NavigateToUrl(new System.Uri(baseUrl + "/images"));
string expected = baseUrl + "/images";
Assert.AreEqual(expected, GlobalVariable.browser.Uri);
}
然而,在断言时,
GlobalVariable.browser.Uri
的值仍然指向www.google.com,即使浏览器已成功导航到预期网页。我尝试设置Playback.Wait()
来确保我不会过早地断言。奇怪的是,这只发生在一个或两个开发环境中(其他环境显示GlobalVariable.browser.Uri
的正确值),这让我相信这是环境变量而不是代码问题导致的。此外,如果我们每次调用对象时都调用
get
函数来动态设置和更新GlobalVariable.browser
对象,会怎样呢?(如下所示:)private BrowserWindow _browser;
public BrowserWindow browser
{
get
{
BrowserWindow currentWindow = BrowserWindow.FromProcess(_browser.Process);
return currentWindow;
}
set
{
_browser = value;
return _browser;
}
}
如果传入一个已经存在的进程 ID (PID),则会基于该系统进程创建对象,并具有正确的属性。因此,本质上,在初始化方法期间创建的 BrowserWindow 对象在其运行过程中不会被更新,我们必须基于该进程创建一个新对象。同样,这只发生在某些远程环境中,而不是在本地设置的开发机器上。我错过了什么?