繁体   English   中英

Selenium Grid中C#中的屏幕截图

[英]Screenshot in C# on Selenium Grid

在针对硒网格运行测试时尝试拍摄屏幕截图时,我遇到一个奇怪的问题

 public void TakeScreenshot(object methodName)
    {
        try
        {
            Screenshot ss = ((ITakesScreenshot)_driver).GetScreenshot();
            var filePath = AppDomain.CurrentDomain.BaseDirectory + "\\..\\..\\Screenshots\\" + methodName + ".png";
            ss.SaveAsFile(filePath);
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
            throw;
        }

    }

我有以下方法来截取屏幕截图,但是当它在网格上运行时,即使测试通过了,我也会遇到以下失败。

System.InvalidOperationException:会话[(null externalkey)]不可用,也不在最近的1000个终止的会话中。

当我在本地运行它时,我得到以下内容

OpenQA.Selenium.WebDriverException:引发了具有null响应的异常,该异常将HTTP请求发送到URL http:// localhost:54408 / session // screenshot的远程WebDriver服务器。 异常的状态为ConnectFailure,并且消息为:无法连接到远程服务器

但是,对于这两种环境,我都得到了屏幕截图,但这未通过测试。 有谁知道用C#截图硒的最佳方法?


更新-我发现这似乎只是在测试完成后才发生,我在[BeforeScenario]中放置了完全相同的代码,并且没有出错,因此它在测试结束时发生了...

由于这些评论,我发现了为什么会这样。

我收到该错误的原因是没有驱动程序,没有驱动程序的原因是由于[AfterScenario]被多次调用,因此第二次运行时没有驱动程序,因此无法拍摄屏幕截图。

我的after场景被多次调用的原因是因为它在我创建的基类中,该基类由每个step类继承。

一旦我创建了一个新类,并将after / before场景移到了自己的单独类中,那么我的after场景只被调用了一次,错误就消失了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM