如何防止TFS构建服务器上的chromedriver.exe被锁定?

4

我们的TFS构建服务器有大约50%的几率出现以下错误:

Exception Message: Access to the path 'C:\Builds\5673\Company\QA_Web_Tests\bin\WebDrivers\chromedriver.exe' is denied. (type UnauthorizedAccessException)
Exception Stack Trace:    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.File.InternalDelete(String path, Boolean checkHost)
   at Microsoft.TeamFoundation.Common.FileSpec.DeleteFile(String path, Boolean throwExceptionOnFailure)
   at Microsoft.TeamFoundation.Common.FileSpec.DeleteDirectoryInternal(String path)
   at Microsoft.TeamFoundation.Common.FileSpec.DeleteDirectoryInternal(String path)
   at Microsoft.TeamFoundation.Common.FileSpec.DeleteDirectory(String path, Boolean recursive)
   at Microsoft.TeamFoundation.Build.Workflow.Activities.DeleteDirectory.Execute(CodeActivityContext context)
   at System.Activities.CodeActivity.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager)
   at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)

这是一个启用了MSTest并具有并行测试功能的4核处理器。

一种解决方法是在构建之间重新启动服务器。但是,当我们想要每天运行多次测试时,这将是繁琐的。

有其他人遇到过这个问题吗?你知道如何修复吗?谢谢。

这是我的清理方法:

public void Cleanup()
{
    WebDriver.Quit();
    Console.WriteLine(@"[console] TEST END. Datetime: " + DateTime.Now);
    _stopWatch.Stop();
    Console.WriteLine(@"[console] TEST DURATION: " + _stopWatch.Elapsed);
}

你解决了吗?我们在构建中使用Selenium自动化UI测试时遇到了相同的问题。Stevo - user1275154
嘿,你最终修好了这个问题了吗? - reggaemahn
Jeevan,它似乎自己解决了。我不是服务器的管理员,所以我不确定,但可能是一些Windows补丁修复了它。 - Aaron
1个回答

1
问题在于您的测试启动了WebDriver,但没有关闭它。最好的解决方案是不要从构建中运行UI测试--UI测试应该在部署后进行,并且理想情况下与MTM测试用例相关联,或作为发布后的操作。MTM / Lab管理专门设计用于UI测试,是更适合此工作的工具。解决您特定问题的方法是更改测试使得WebDriver在测试结束后被正确关闭,如何实现取决于您!

谢谢您的回复,但这不是此案例中的问题。我有一个清理方法,它会执行.Quit()。我将在上面的问题正文中包含该方法。此外,在环境完全部署后运行 UI 测试,因此也不是问题。测试构建仅运行测试。 - Aaron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接