繁体   English   中英

用硒拍摄整页的屏幕截图

[英]Take screenshot of full page with selenium

我有在每个步骤之后都要截屏的代码,但是只截取了当前视点的截屏。 我希望获取整个页面的屏幕截图。

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

编辑:

我的问题不在于精确截屏。 我面临的问题是我的页面扩展了浏览器的高度,因此,当我进行屏幕截图时,它是可查看页面的屏幕截图,而不是整个页面的屏幕截图。

在测试开始时您是否尝试过以下方法?

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'略有不同

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

在webdriver本身内的实现(如您显示的代码),IMO应该只截取webdriver的屏幕快照,因为您要让webdriver截取其处理的屏幕快照(浏览器窗口)。 如果要全屏显示,请使用下面链接中使用的一些实现。

使用C#捕获屏幕截图

编辑:即使您看不到整个页面的屏幕截图(并且您必须向下滚动才能看到它),也似乎不可能如以下所示:

如何在Java中使用Selenium获取完整网页的屏幕截图?

您可能要尝试硒的此功能:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM