[英]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.