Selenium 2中testing截图的最佳方法是什么?

我需要一种方式来截取我的functiontesting。 现在我用Selenium 2和C#绑定。 我非常想在testing结束时截图,以确保显示所需的页面。 有什么特定的工具,你们知道,我可以将其纳入我的C#代码,将触发屏幕截图? 我找不到内置的Selenium 2解决scheme(无需查看)。

要在Selenium 2中执行截图,您需要执行以下操作

driver = new FireFoxDriver(); // Should work in other Browser Drivers driver.Navigate().GoToUrl("http://www.theautomatedtester.co.uk"); Screenshot ss = ((ITakesScreenshot) driver).GetScreenshot(); //Use it as you want now string screenshot = ss.AsBase64EncodedString; byte[] screenshotAsByteArray = ss.AsByteArray; ss.SaveAsFile("filename", ImageFormat.Png); //use any of the built in image formating ss.ToString();//same as string screenshot = ss.AsBase64EncodedString; 

该代码应该工作,因为我迅速在IronPython Repl中testing它。 请参阅下面的IronPython代码

 import clr clr.AddReference("WebDriver.Common.dll") clr.AddReference("WebDriver.Firefox.dll") from OpenQA.Selenium import * from OpenQA.Selenium.Firefox import * driver = FirefoxDriver() driver.Navigate().GoToUrl("http://www.theautomatedtester.co.uk") s = driver.GetScreenshot() s.AsBaseEncodedString # HUGE string appears in the REPL 
 var driver = new InternetExplorerDriver(); driver.Navigate().GoToUrl("http://www.google.com"); var ss = driver.GetScreenshot(); ss.SaveAsFile("ss.png", System.Drawing.Imaging.ImageFormat.Png); 

我不知道是否重要,但是当我用c#编写的时候,我最终不得不抛出驱动程序。

就像是:

截图ss =((ITakesScreenshot)驱动程序).GetScreenshot();

只需在一行代码中使用扩展方法TakeScreenshot()。

 IWebDriver driver = new InternetExplorerDriver(); driver.Navigate().GoToUrl("Your_Homepage_Url"); driver.TakeScreenshot().SaveAsFile("file_name_string", ImageFormat.Jpeg); 
  1. 在解决scheme/项目中添加System.Drawing的引用。
  2. 在testing中使用System.Drawing.Imaging命名空间。

在这里,我正在捕捉Facebook主页的屏幕截图。

 using System; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using OpenQA.Selenium.Support.UI; using NUnit.Framework; using System.IO; using System.Collections; using System.Drawing.Imaging; namespace FacebookRegistrationUsingC_Sharp { [TestFixture] public class ScreenShot { IWebDriver driver = null; IWebElement element = null; [SetUp] public void SetUp() { driver = new ChromeDriver("G:\\Selenium_Csharp\\Jar\\chromedriver_win32"); driver.Navigate().GoToUrl("https://www.Facebook.com"); driver.Manage().Window.Maximize(); } [Test] public void TestScreenShot() { Screenshot ss = ((ITakesScreenshot)driver).GetScreenshot(); ss.SaveAsFile("e:\\pande", System.Drawing.Imaging.ImageFormat.Jpeg); } [TearDown] public void TearDown() { driver = null; element = null; } } } 
 public void TakeScreenshot(string saveLocation) { var location = GetPath() + _name + "\\" + saveLocation + ".png"; var ssdriver = _driver as ITakesScreenshot; var screenshot = ssdriver.GetScreenshot(); screenshot.SaveAsFile(location, ImageFormat.Png); } 

此代码将帮助您拍摄屏幕截图

使用System.Drawing.Imaging参考。 下面的代码可以用于截图。

 IWebDriver driver = new FirefoxDriver(); ITakesScreenshot screenshotDriver = driver as ITakesScreenshot; Screenshot screenshot = screenshotDriver.GetScreenshot(); String fp = "D:\\" + "snapshot" + "_"+ DateTime.Now.ToString("dd_MMMM_hh_mm_ss_tt") + ".png"; screenshot.SaveAsFile(fp, ImageFormat.Png); 

注意:时间戳具有两个优点:1)截图时,您将会了解完美的date时间。 2)SaveAsFile函数覆盖现有的文件。 所以,DateTime可以帮助不同的文件创build。

  ScreenCaptureJob scj; scj = new ScreenCaptureJob(); // Specify the path & file name in which you want to save scj.OutputScreenCaptureFileName = @"C:\Users\jpavankumar\Desktop\Screencaptuere\ScreenRecording4.wmv"; // Start the Screen Capture Job scj.Start(); scj.Stop(); 

试试这个代码在这里…希望它会对你有用….!

使用selenium有两个我熟悉的电话: captureEntirePageScreenshotcaptureScreenshot 。 你可能想看看这些电话,看看他们是否会完成你所追求的。