我有代码在每一步后都截取屏幕截图,但它只是截取当前视点的截图。我希望它能够截取整个页面的截图。
我已经研究了像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截取它处理的内容(浏览器窗口)。如果您想要全屏,只需使用下面链接中使用的一些实现。
Capture a Screen Shot using C#
编辑:如果您想要截取整个页面的屏幕截图,即使它不可见(并且您必须向下滚动才能看到它),它似乎不可能如下所示:
how to get screenshot of full web page using selenium in java?
您可能想尝试使用selenium的这个功能:
set_window_size(int(width), int(height))
我只是将窗口大小设置为4800 * 2560并立即捕获整页,我必须在27英寸的屏幕上向下滚动两次。