在场景的结尾,我想拍照如果失败了。以下代码不起作用:

[AfterScenario]
public void AfterScenario()
{
    if(ScenarioContext.Current.TestError != null)
    {
     WebBrowser.Driver.CaptureScreenShot(ScenarioContext.Current.ScenarioInfo.Title);
    }
}


我认为这可能是由于我使用Coypu(包裹了硒)启动了我的浏览器。该驱动程序未实现“ captureScreenShot”方法。所以我的问题是:当我使用Coypu启动浏览器时,如何在场景之后截图?

启动浏览器的代码如下:

sessionConfiguration.Driver = typeof (SeleniumWebDriver);
sessionConfiguration.Browser = Drivers.Browser.Firefox;

最佳答案

如您所说,这在Coypu中尚未实现。到目前为止,我根本就不需要截屏,原因是至今没有人问过。

要访问本机驱动程序(在您的情况下为WebDriver),请使用BrowserSession.Native,然后可以使用WebDriver的GetScreenshot方法。最终看起来像这样(免责声明:未经测试):

var driver = (ITakesScreenshot) coypuBrowserSession.Native;

var screenshot = driver.GetScreenshot();

screenshot.SaveAsFile("c://screenshot.png", System.Drawing.Imaging.ImageFormat.Png);


I've opened an issue在github上供您将其添加到Coypu的BrowserWindow API中

09-25 21:40