C# 如何在MSTest中附加测试失败的屏幕截图?
如果测试执行失败,我无法设置将屏幕截图附加到TestResult的正确方法 该框架是使用Visual Studio 2015 Selenium v3.141.0建立的 在此过程中,我尝试将其作为参数传递给EventFiringWebDriver,以便能够附加一个带有 但是,我不喜欢传递TestContext,因为该框架分为包含所有页面对象的Selenium程序集和包含所有测试用例的测试程序集 TestBase.csC# 如何在MSTest中附加测试失败的屏幕截图?,c#,selenium,visual-studio-2015,mstest,C#,Selenium,Visual Studio 2015,Mstest,如果测试执行失败,我无法设置将屏幕截图附加到TestResult的正确方法 该框架是使用Visual Studio 2015 Selenium v3.141.0建立的 在此过程中,我尝试将其作为参数传递给EventFiringWebDriver,以便能够附加一个带有 但是,我不喜欢传递TestContext,因为该框架分为包含所有页面对象的Selenium程序集和包含所有测试用例的测试程序集 TestBase.cs [测试初始化] public void TestInitBase() { Sel
[测试初始化]
public void TestInitBase()
{
SeleniumHelper=新助手Selenium(TestContext);
}
HelperSelenium.cs
public HelperSelenium(TestContext-TestContext)
{
Id=int.Parse(testContext.Properties[“colegio”].ToString());
WebDriver=新的WebDriverSelector(testContext);
...
}
WebDriverSelector.cs
公共WebDriverSelector(TestContext tc)
{
testContext=tc;
...
var firingWebDriver=新的事件监听器(remoteDriver,testContext).GetWebDriver();
...
EventListeners.cs 公共事件监听器(IWebDriver驱动程序、TestContext TestContext) { ... 私有静态void上传屏幕截图() { 屏幕截图ss=c.GetScreenshot(); 字符串路径=目录。GetCurrentDirectory()+“\\”+ TestContext.TestName+“\u1”+ contador+“.png”; SaveAsFile(路径,ScreenshotImageFormat.Png); TestContext.AddResultFile(路径); }
我想跳过将TestContext从一个类传递到另一个类,但是我想不出一种实际实现它的方法。最佳实践是用事件侦听器包装驱动程序,并用自己的屏幕截图捕捉器覆盖OneException方法。 通过这种方式,它将在任何地方识别异常,并在无需额外维护的情况下自动拍摄屏幕截图
@Override
public void onException(Throwable throwable, WebDriver driver) {
try
{
/* Take screenshot when exception happened. */
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
/* save screenshot to file. */
FileUtils.copyFile(scrFile, new File("C:\\Workspace\\webdriverEventListenerScreenshot.png"));
}catch(IOException ex)
{
ex.printStackTrace();
}
}
参考资料:
编辑:
您可以使用(trace.WriteLine(“path”)将路径添加到测试结果/将其写入跟踪Hello@OriBr,谢谢您的输入。我可以这样做,但这仍然不能解决我主要关心的问题,即必须通过TestContext才能在EventListener中使用TestContext.AddResultFile。每次截图时,您都可以将文件的路径保存在全局变量中。获得此路径后,您可以访问从TestCleanUp中删除并添加它。不要忘记使用Guid对象生成唯一路径