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

问题描述 投票:1回答:3

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

我已经研究了像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);
    }

编辑:

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

c# selenium gherkin
3个回答
0
投票

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

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

例如你可以在这里包括它:

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

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

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


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?


0
投票

您可能想尝试使用selenium的这个功能:

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

我只是将窗口大小设置为4800 * 2560并立即捕获整页,我必须在27英寸的屏幕上向下滚动两次。


推荐问答