¿La mejor manera de tomar capturas de pantalla de pruebas en Selenium 2?

Necesito una forma de tomar capturas de pantalla de mis pruebas funcionales. En este momento estoy usando Selenium 2 con enlaces C #. Bastante quiero tomar una captura de pantalla al final de la prueba para asegurarme de que se muestre la página deseada. ¿Hay alguna herramienta en particular que ustedes conozcan que pueda incorporar a mi código C # que activará una captura de pantalla? No pude encontrar una solución integrada de Selenio 2 (sin examinarlo).

Para hacer capturas de pantalla en Selenium 2, debes hacer lo siguiente

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; 

Ese código debería funcionar, ya que lo probé rápidamente en IronPython Repl. Ver el código de IronPython a continuación

 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); 

No sé si importa, pero terminé teniendo que lanzar el controlador cuando estaba escribiendo en c #.

algo como:

 Captura de pantalla ss = ((ITakesScreenshot) controlador) .GetScreenshot ();

Simplemente use el método de extensión TakeScreenshot () en una línea de código.

 IWebDriver driver = new InternetExplorerDriver(); driver.Navigate().GoToUrl("Your_Homepage_Url"); driver.TakeScreenshot().SaveAsFile("file_name_string", ImageFormat.Jpeg); 
  1. Agregue una referencia de System.Drawing en su solución / proyecto.
  2. Use System.Drawing.Imaging namespace en su prueba.

Aquí estoy capturando la captura de pantalla de la página de inicio de 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); } 

Este código te ayudará a tomar capturas de pantalla

Use System.Drawing.Imaging reference. El siguiente código se puede usar para tomar una captura de pantalla.

 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); 

Notas: Timestamp tiene dos ventajas: 1) Conocerá el perfecto DateTime cuando se tome la captura de pantalla. 2) La función SaveAsFile sobrescribe el archivo existente. Entonces, DateTime puede ayudar a crear archivos diferentes.

  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(); 

Prueba este código aquí … ¡espero que te sea útil …!

driver.Url = "https://www.amazon.in/";
// Almacena la imagen en la carpeta bin ((ITakesScreenshot)driver).GetScreenshot().SaveAsFile("CurrentPage.png");
// Almacenar imagen en el controlador de la unidad D ((ITakesScreenshot)driver).GetScreenshot().SaveAsFile(@"D:\CurrentPage.png");

JAVA

 protected void fullPageScreenshot(String testname) { String timeStamp = new SimpleDateFormat("dd_MM_yyyy_HH_mm_ss").format(Calendar.getInstance().getTime()); String imageName = testname + "-" + timeStamp + ".png"; Screenshot screenshot = new AShot().shootingStrategy(ShootingStrategies.viewportPasting(2000)) .takeScreenshot(DriverManager.getDriver()); try { ImageIO.write(screenshot.getImage(), "PNG", new File("./FullPage_Screenshots/" + imageName)); } catch (Exception e) { System.out.println("Capturing FullPage Screenshot failed"); } } 

utilice la biblioteca Ashot para tomar capturas de pantalla completas, incluso cuando las páginas se deben desplazar https://mvnrepository.com/artifact/ru.yandex.qatools.ashot/ashot/1.5.4

Defina esto en código global:

 var counter = DateTime.Now.Ticks.ToString(); ((ITakesScreenshot)driver).GetScreenshot().SaveAsFile((snap +counter + ".jpg").ToString(), OpenQA.Selenium.ScreenshotImageFormat.Jpeg); test.Log(LogStatus.Fail, "Snapshot below: " + test.AddScreenCapture(snap + counter + ".jpg")); 

Usando selenium había dos llamadas con las que estaba familiarizado: captureEntirePageScreenshot y captureScreenshot . Es posible que desee examinar esas llamadas para ver si lograrán lo que busca.