使用selenium截取整页的屏幕截图

时间:2017-11-28 11:07:29

标签: c# selenium gherkin

我的代码在每一步之后都会截取屏幕截图,但它只是截取当前视点的屏幕截图。我希望它能够截取整个页面的截图。

我已经研究了像aShot这样的东西,但我不知道如何将它添加到我的项目中。

当前代码:

    [AfterStep]
    public void AfterStep()
    {
        Screenshot ss = ((ITakesScreenshot)webDriver).GetScreenshot();
        string stepTitle = ScenarioContext.Current.StepContext.StepInfo.Text;
        string fileTitle = DateTime.Now.ToString("yyyyMMdd_HHmmss")+ "_" + stepTitle;
        string drive = (path + DateTime.Now.ToString("yyyyMMdd_HHmm") + "_" + testTitle);

        string screenshotfilename = drive + "\\" + fileTitle + ".Png";
        ss.SaveAsFile(screenshotfilename, ScreenshotImageFormat.Png);
    }

编辑:

我的问题与截取屏幕截图的操作无关。我面临的问题是我的页面扩展了浏览器的高度,因此当我截取屏幕截图时,它是可查看页面的屏幕截图,而不是整个页面。

3 个答案:

答案 0 :(得分:0)

您是否在测试开始时尝试过以下操作?

webDriver.Manage().Window.Maximize();

e.g。你可以把它包括在这里:

[Binding]
public class Setup
{
public static IWebDriver Driver = new ChromeDriver();

[BeforeTestRun]
public static void SetUpBrowser()
{
Driver.Manage().Window.Maximize();
}

注意:它可能与Gherkin中的'BeforeTestRun'略有不同

答案 1 :(得分:0)

如果您的浏览器位于最顶层并且您在屏幕上看到它,请尝试使用C#的屏幕截图功能(将截取整个屏幕的屏幕截图)。就像点击PrtScn按钮一样可以保存整个屏幕。

webdriver本身内的实现(就像你展示的代码一样),IMO应该只截取webdriver的截图,因为你要求webdriver截取它处理的内容(浏览器窗口)。如果您想要全屏,只需使用下面链接中使用的一些实现。

Capture a Screen Shot using C#

编辑:如果您想拍摄整个页面的屏幕截图,即使它不可见(并且您需要向下滚动才能看到它),但似乎不可能如下所示:

how to get screenshot of full web page using selenium in java?

答案 2 :(得分:0)

您可能想尝试硒的这一功能:

set_window_size(int(width), int(height))

我只是将窗口大小设置为4800 * 2560,一次捕获了整个页面,因此不得不在27英寸的屏幕上向下滚动两次。