Chromedriver在Azure DevOps托管代理上并行运行时引发异常

susanml
susanml
susanml
订阅者
459
文章
0
评论
测试交流1 180字数 167阅读0分33秒阅读模式
摘要当我使用SpecRun在Azure DevOps发布管道中并行运行自动测试时。SpecFlow,我在一些测试中遇到了一个例外,关于Chromedriver正在被另一个用户使用。。。

当我使用SpecRun在Azure DevOps发布管道中并行运行自动测试时。在SpecFlow中,我在一些与另一个进程(正在运行的其他测试)正在使用Chromedriver相关的测试中遇到了一个异常。例外情况是:

错误:调用的目标引发了异常-&燃气轮机;进程无法访问文件D:a_tentestresultschrome102.0.5005.61X64chromedriver。因为它正被另一个进程使用。文章源自玩技e族-https://www.playezu.com/179396.html

这不会在本地发生,并且在多个线程上运行良好,而且似乎只在管道中发生。以前有人经历过这种情况吗?如果是这样的话,有没有解决方法?文章源自玩技e族-https://www.playezu.com/179396.html 文章源自玩技e族-https://www.playezu.com/179396.html

 
    • benm912
      benm912 9

      我设法解决了这个问题。它在本地传递的原因是因为我的机器上存在Chromedriver,所以每当测试运行时,它都不需要下载文件。在虚拟机上,Chromedriver不存在,所以它必须下载。似乎测试是在连接到下载Chromedriver的任何进程完成之前执行的,这就是为什么第一组运行的测试失败了,但这些线程上的后续测试通过了。
      我通过弹出一些重试逻辑和一些日志来解决这个问题,以显示初始化失败的次数。
      [Before]
      public void Before()
      {

      int errorCount = 0;
      while (errorCount < 5)
      {
      try
      {
      _webDriverContext = new WebDriverContext();
      _webDriverContext.Browser = new Browser(BrowserOptionsSupport.GetBrowserOptions(new TestSettings()));

      }

      catch
      {
      Log.Info($"Failed to initialize Chrome on {errorCount} attempt");
      errorCount++;
      if (errorCount < 5)
      {
      continue;
      }
      else
      {
      throw;
      }
      }
      break;
      }
      }

    匿名

    发表评论

    匿名网友
    确定

    拖动滑块以完成验证