我的同事和我正在开发一个编码UI项目。我们都拥有与TFS相同的版本,但是在他的电脑上运行了所有的测试用例,而我的测试用例却没有。他们以前在我的机器上运行得很好,直到一天早上他们决定不工作。即使映射是正确的,我总是会得到相同的错误,即找不到UI测试控件。让我提醒你,他们在我的同事机器上工作得很好。我们也有相同版本的IE(11)。编码UI测试不能在一台机器上运行,但可以在另一台机器上运行
这可能是什么原因造成的?
感谢提前的帮助。
我的同事和我正在开发一个编码UI项目。我们都拥有与TFS相同的版本,但是在他的电脑上运行了所有的测试用例,而我的测试用例却没有。他们以前在我的机器上运行得很好,直到一天早上他们决定不工作。即使映射是正确的,我总是会得到相同的错误,即找不到UI测试控件。让我提醒你,他们在我的同事机器上工作得很好。我们也有相同版本的IE(11)。编码UI测试不能在一台机器上运行,但可以在另一台机器上运行
这可能是什么原因造成的?
感谢提前的帮助。
我的同事似乎解决了这种情况,但我们仍然不明白为什么以前版本的代码适用于除我的机器以外的所有人。问题发生在我们的LaunchBrowser方法中,该方法将使用2个不同的浏览器变量实例。他摆脱了不必要的和播放命令,似乎解决了这个问题。
下面是代码的两个版本,前一个和新写的一个:
老:
public static void LaunchBrowser(string url)
{
GlobalVariable.browser = new BrowserWindow();
CloseAllBrowsers();
BrowserWindow.CurrentBrowser = GlobalVariable.BrowserType;
Playback.PlaybackSettings.WaitForReadyLevel = Microsoft.VisualStudio.TestTools.UITest.Extension.WaitForReadyLevel.Disabled;
GlobalVariable.browser = BrowserWindow.Launch();
System.Uri URI = new System.Uri(url);
GlobalVariable.browser.NavigateToUrl(URI);
Playback.PlaybackSettings.WaitForReadyLevel = Microsoft.VisualStudio.TestTools.UITest.Extension.WaitForReadyLevel.UIThreadOnly;
GlobalVariable.browser.Maximized = true;
if (BrowserWindow.CurrentBrowser == "Firefox")
{
Mouse.Click(_fireFoxAuthOK);
}
Logging.WriteLog("Browser was navigated to " + url + " in browser: <" + GlobalVariable.BrowserType + ">");
}
新:
public static void LaunchBrowser(string url)
{
CloseAllBrowsers();
BrowserWindow.CurrentBrowser = GlobalVariable.BrowserType;
GlobalVariable.browser = BrowserWindow.Launch(new Uri(url));
GlobalVariable.browser.Maximized = true;
if (BrowserWindow.CurrentBrowser == "Firefox")
{
Mouse.Click(_fireFoxAuthOK);
}
Logging.WriteLog("Browser was navigated to " + url + " in browser: <" + GlobalVariable.BrowserType + ">");
}
我认为这个问题是在这line:
Playback.PlaybackSettings.WaitForReadyLevel = Microsoft.VisualStudio.TestTools.UITest.Extension.WaitForReadyLevel.UIThreadOnly;
因为浏览器的前台线程没有准备好开始播放。你可以试试这个
Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.Disabled;
或在您的电脑不同的替代方式。
请参阅此链接Mathew Aniyan's Blog了解更多信息。
将WaitForReadyLevel设置为UIThreadOnly意味着测试将在继续之前等待浏览器完成加载(如链接到的博客文章中所述)。通过禁用它,该方法应该仍然通过,因为除了发送一个新的URL以导航到(没有点击,文本编辑等)之外,您没有与浏览器交互。但是,一旦通过此方法,如果设置仍处于禁用状态,则尝试与页面上的对象进行交互时可能会遇到错误。这里的主要问题是BrowserWindow()对象的双重实例。 – 2014-10-02 14:00:46
谢谢雷恩考克斯,这只是我的建议,以检查为什么测试不运行不同的电脑。 – 2014-10-02 17:25:53
究竟哪种语言和什么错误? – 2014-10-01 16:20:05
我正在使用C#,错误是找不到UI测试控件。但错误并不是真正的问题。它表示映射后的控件无法找到,即使所有搜索属性都匹配,并且它们对于我的同事有同样的作用。问题在于已知可成功执行的测试用例没有错误,只是不会以上述错误运行。我们都拥有相同版本的代码,因为我们将它从TFS(源代码管理)中提取出来。 – Eli 2014-10-01 17:09:31