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

时间:2014-10-27 18:09:29

标签: tfs selenium-webdriver locking selenium-chromedriver

我在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)

它是一个4核处理器,启用了并行测试(通过MSTest)。

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

有没有其他人遇到这个?你知道修复吗?感谢。

这是我的清理方法:

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

1 个答案:

答案 0 :(得分:1)

问题是你的测试启动了webdriver,但是没有关闭它。

最佳解决方案是不在构建中运行UI测试 - UI测试应该在部署后进行,理想情况下与MTM测试用例相关,或者作为发布后操作。 MTM / Lab管理专门针对UI测试而设计,对于这项工作来说将是一个更合适的工具。

解决您的具体问题的方法是更改​​您的测试,以便将Web驱动程序作为测试后操作正确关闭。您完成此任务的确切机制取决于您!