当前位置: 首页 > 知识库问答 >
问题:

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

龚盛
2023-03-14

我在我们的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个答案

任绪
2023-03-14

问题是您的测试会启动webdriver,但不要关闭它。

最好的解决方案是不要从构建中运行UI测试——UI测试应该在部署后进行,理想情况下与MTM测试用例相关联,或者作为发布后的操作。MTM/实验室管理是专门为UI测试而设计的,它将是更适合这项工作的工具。

解决您的特定问题的方法是更改您的测试,以便作为测试后操作正确关闭Web驱动程序。实现这一目标的确切机制取决于您!

 类似资料:
  • 如图是一个简化的下单流程,首先是提交订单,然后是支付。支付的话,一般是走支付网关(支付中心),然后支付中心与第三方支付渠道(微信、支付宝、银联)交互,支付成功以后,异步通知支付中心,支付中心更新自身支付订单状态,再通知业务应用,各业务再更新各自订单状态。 这个过程中经常可能遇到的问题是掉单,无论是超时未收到回调通知也好,还是程序自身报错也好,总之由于各种各样的原因,没有如期收到通知并正确的处理后续

  • 如图是一个简化的下单流程,首先是提交订单,然后是支付。支付的话,一般是走支付网关(支付中心),然后支付中心与第三方支付渠道(微信、支付宝、银联)交互,支付成功以后,异步通知支付中心,支付中心更新自身支付订单状态,再通知业务应用,各业务再更新各自订单状态。 这个过程中经常可能遇到的问题是掉单,无论是超时未收到回调通知也好,还是程序自身报错也好,总之由于各种各样的原因,没有如期收到通知并正确的处理后续

  • 我正在遵循一个教程来让kie-drools-workbench和kie-server工作:https://www.intertech.com/blog/simple-setup-of-drools-kie-workbench-and-kie-server-in-one-wildfly-instance/ 安装了wildfly,并下载了kie-server-6.4.0.final-ee7和kie-d

  • 然而,在构建服务器上构建解决方案是另一回事,因为我得到了表单的多个错误... 当我运行TFS构建定义时,以及当我远程到盒子并直接通过盒子本身的VS构建时,我都会得到错误。 整个project.assets.json没有找到的问题似乎让人头疼不已。在我的例子中,问题是我试图在我们的TFS2017构建服务器上解决它,它没有也永远不会有互联网接入('因为它是一个服务器!)。 由于project.asse

  • 添加了Visual Studio测试平台安装程序 添加了Visual Studio测试任务 以下行的vsTest失败,错误为:System.net.WebException:基础连接关闭:连接意外关闭。 我发现上面的代码行试图检查最新版本的WebDriver,如果不存在,则从https://chromedriver.storage.googleapis.com下载。但是,在TFS构建服务器上,外部

  • 问题内容: 我发现经典的Java Deadlock Tutorial 中包含对System.out.format的调用将防止死锁的发生,我不知道为什么。 下面的代码是相同的教程,与除的 这是输出: 删除违规行会导致通常的死锁: 对System.out.format的调用是否以某种方式改变了线程获取对象内在锁的方式? 更新: 通过更改代码中启动线程的位置,我能够使系统再次陷入僵局: 这就引出了一个问