我正在使用Visual Studio 2019
和WinAppDriver
在简单的WPF Application
上运行单元测试。
为此,我使用了VS中集成的Test Explorer。
问题:当我通过Test Explorer
运行测试时,它会在后台(在Visual Studio后面)打开所需的窗口;然后它会在正确的位置执行点击操作,但是鼠标不在我的Visual Studio中单击,而是在我所需的应用程序窗口中单击,因为它没有显示在最前面。
当我以Debug
模式启动测试时,一切正常。窗口打开并聚焦在前面。点击右键等,这样我的代码就不会成为问题了!!
我尝试等待它准备就绪(可点击),然后再单击以使其点击:
private void WaitFindClick(string id, string wpf_type)
{
var wait = new DefaultWait<WindowsDriver<WindowsElement>>(session);
wait.Timeout = TimeSpan.FromSeconds(5);
wait.PollingInterval = TimeSpan.FromMilliseconds(100);
wait.IgnoreExceptionTypes(typeof(InvalidOperationException));
wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath($"//{wpf_type}[@AutomationId=\"{id}\"]")));
session.FindElementByAccessibilityId(id).Click();
}
总结一下,Test Explorer
在Debug
模式下可以正常工作,但是在normal
模式下却不能正常运行,它可以正确打开应用程序,但不会将其置于最前面,因此Click可以打到Visual Studio而不是所需的应用程序。
出了什么问题?如何修复Test Explorer
以自动将Test App置于最前面?
我希望我在这里。这是我的第一个问题,因此,如果我错过了某事,请告诉我。 祝你有美好的一天,并提前致谢!
编辑:
我通过在Window.Topmost = true;
构造函数中设置MainWindow()
属性来找到一种解决方法,但这并不是我真正想要的。