无法在Windows 8.1上以不同用户身份运行编码UI测试

时间:2014-08-13 14:14:24

标签: visual-studio-2013 windows-8.1 coded-ui-tests

我们有一个Coded UI测试套件,它依赖于以不同用户身份运行我们的测试。我们通过使用以下ApplicationUnderTest.Launch重载来完成此任务:

ApplicationUnderTest.Launch(browserLocation, null, url, username, GetSecurePassword(password), domain);

我们使用Visual Studio 2013 premium(更新3),在Windows 7和Windows 2012 R2上运行时没有问题。现在我们已迁移到Windows 8.1,我们无法再以其他用户身份运行。我们得到以下臭名昭着的错误:

  

无法启动应用程序。这可能是由于以下原因之一:   1)应用程序的另一个实例已在运行,并且一次只能运行一个实例。   2)应用程序启动了另一个进程,现在已停止。您可能需要直接启动该过程。   3)您没有足够的权限使用此应用程序。"文件:C:\ Program Files \ Internet Explorer \ iexplore.exe。

当我们以当前用户身份运行时,我们能够成功运行编码的UI测试:

ApplicationUnderTest.Launch(browserLocation, null, url);

不幸的是,这样做不允许我们进行测试。我们以管理员身份运行Visual Studio,我们运行的所有测试用户都自己设置为管理员。你知道问题可能是什么吗?

这是我们遇到的堆栈跟踪:

at Microsoft.VisualStudio.TestTools.UITesting.ApplicationUnderTest.ThrowIfProcessNotValid(Process process) at Microsoft.VisualStudio.TestTools.UITesting.ApplicationUnderTest.SetCurrentProcessPrivate(Process value) at Microsoft.VisualStudio.TestTools.UITesting.ApplicationUnderTest.<>c__DisplayClassb.<set_Process>b__a() at Microsoft.VisualStudio.TestTools.UITesting.CodedUITestMethodInvoker.InvokeMethod[T](Func`1 function, UITestControl control, Boolean firePlaybackErrorEvent, Boolean logAsAction) at Microsoft.VisualStudio.TestTools.UITesting.ApplicationUnderTest.set_Process(Process value) at Microsoft.VisualStudio.TestTools.UITesting.ApplicationUnderTest.Start(ProcessStartInfo startInfo) at Microsoft.VisualStudio.TestTools.UITesting.ApplicationUnderTest.<>c__DisplayClass10.<.ctor>b__e() at Microsoft.VisualStudio.TestTools.UITesting.CodedUITestMethodInvoker.InvokeMethod[T](Func`1 function, UITestControl control, Boolean firePlaybackErrorEvent, Boolean logAsAction) at Microsoft.VisualStudio.TestTools.UITesting.ApplicationUnderTest..ctor(String fileName, String alternateFileName, String arguments, String userName, SecureString password, String domain) at Microsoft.VisualStudio.TestTools.UITesting.ApplicationUnderTest.<>c__DisplayClass4.<Launch>b__3() at Microsoft.VisualStudio.TestTools.UITesting.CodedUITestMethodInvoker.InvokeMethod[T](Func`1 function, UITestControl control, Boolean firePlaybackErrorEvent, Boolean logAsAction) at Microsoft.VisualStudio.TestTools.UITesting.ApplicationUnderTest.Launch(String fileName, String alternateFileName, String arguments, String userName, SecureString password, String domain) at Pantheon.Web.AppsPortal.UITests.Utilities.TestBase.LaunchBrowserWindow(String browserLocation, String url, String username, String password, String domain) in c:\dev_jr\AppsPortal\Development\Pantheon.Web.AppsPortal.UITests\Utilities\TestBase.cs:line 122

TestBase.cs:第122行看起来像这样:

var app = ApplicationUnderTest.Launch(browserLocation, null, url, username, GetSecurePassword(password), domain);

1 个答案:

答案 0 :(得分:1)

自从我发布这个问题以来,我做了一些挖掘和调查。当测试作为Windows 8.1上的另一个用户运行时, Visual Studio 2013 Update 3似乎破坏了编码的UI测试。有关交互的详细信息,请访问MSDN:

http://social.msdn.microsoft.com/Forums/vstudio/en-US/f48665e4-569a-4b67-9bdb-5522b2adffb2/cannot-run-coded-ui-tests-as-different-user-on-windows-81?forum=vsmantest#28c9decb-b579-4848-a7a9-f41c57584d59

感谢Crystal朱的帮助。不幸的是,回滚到Update 2似乎是不可能的,因为微软已经(就Crystal和我所知道的那样)使得除了最新的Update包之外无法获得任何东西。这非常令人沮丧。我们俩都记录了微软的问题:

https://connect.microsoft.com/VisualStudio/feedbackdetail/view/949052/vs2013-update-3-coded-ui-test-cant-launch-ie-under-a-different-user-on-windows-8-1-machine-with-ie11

https://connect.microsoft.com/VisualStudio/feedbackdetail/view/949049/coded-ui-cannot-run-as-a-different-user-with-visual-studio-2013-update-3

不幸的是,目前还没有回复。我已尝试(并且失败)通过官方渠道记录这一点,但我只能报告我失败并被百万呼叫中心对话击败。

希望这不是故事的结尾,但我想记录已经存在的(无关紧要的)进展。我不会将此标记为已接受的答案,因为问题仍然存在。

编辑:2015年1月7日:

由于没有取得进展,我们最终通过改变模拟机制来解决这个问题。这不是一个小开关,我认为它相当hacky。如果它有用,我在这里写博客:(我担心这是一个很长的帖子,因此将它移到SO上并没有真正意义)

http://blog.icanmakethiswork.io/2014/11/Coded-UI-IE-11-and-the-runas-problem.html