【问题标题】:Cannot run Coded UI tests as different user on Windows 8.1无法在 Windows 8.1 上以不同用户身份运行编码 UI 测试
【发布时间】:2015-01-07 21:46:36
【问题描述】:

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

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

我们使用 Visual Studio 2013 高级版(更新 3)并且在 Windows 7 和 Windows 2012 R2 上运行时没有问题。现在我们已经迁移到 Windows 8.1,我们不再能够以不同的用户身份运行。我们得到以下臭名昭著的错误:

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

当我们像这样以当前用户身份运行时,我们能够成功运行 Coded 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:line 122 如下所示:

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

【问题讨论】:

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


    【解决方案1】:

    自从我发布了这个问题后,我做了更多的挖掘和调查。当测试在 Windows 8.1 上以其他用户身份运行时,Visual Studio 2013 Update 3 似乎破坏了 Coded 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 Zhu 的帮助。不幸的是,回滚到更新 2 似乎是不可能的,因为微软(据水晶和我所知)使得除了最新的更新包之外无法获得任何东西。这是非常令人沮丧的。我们俩都记录了 Microsoft 的问题:

    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

    【讨论】:

      猜你喜欢
      • 2021-07-16
      • 2010-09-26
      • 1970-01-01
      • 2017-12-30
      • 2018-01-26
      • 1970-01-01
      • 2011-11-28
      • 1970-01-01
      • 2023-03-25
      相关资源
      最近更新 更多