海獭屏幕截图

4

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

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

我认为这可能是因为我使用 Coypu(它包装了 selenium)启动浏览器。驱动程序没有实现“captureScreenShot”方法。所以我的问题是:当我使用 coypu 启动浏览器后,如何在场景之后拍摄屏幕截图?
启动浏览器的代码如下:
sessionConfiguration.Driver = typeof (SeleniumWebDriver);
sessionConfiguration.Browser = Drivers.Browser.Firefox;
2个回答

2

正如你所说,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);

我在 GitHub 上为您开了一个问题,要求将此功能添加到 Coypu 的 BrowserWindow API。


3
Coypu现在已经添加了截图功能。 - Ben Smith

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接