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).¿La mejor manera de tomar capturas de pantalla de pruebas en Selenium 2?
Respuesta
Para hacer capturas de pantalla en Selenio 2 que tiene que 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, lo más rápidamente lo probé en IronPython Sust. Ver el código IronPython 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
Usando selenio 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.
esas llamadas son específicas de Selenium 1 – AutomatedTester
mi respuesta a continuación muestra cómo hacerlo con Selenium 2. P. No te voté – AutomatedTester
No sé si es importante, pero terminé tener que emitir el conductor cuando estaba escribiendo en C#.
algo como:
Screenshot ss = ((ITakesScreenshot)driver).GetScreenshot();
var driver = new InternetExplorerDriver();
driver.Navigate().GoToUrl("http://www.google.com");
var ss = driver.GetScreenshot();
ss.SaveAsFile("ss.png", System.Drawing.Imaging.ImageFormat.Png);
- agregar una referencia de
System.Drawing
en su solución/proyecto. - Use
System.Drawing.Imaging
espacio de nombres en su examen.
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;
}
}
}
Usar 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: Marca de tiempo tiene dos ventajas: 1) Tendrá la oportunidad de conocer el DateTime perfecta cuando se toma pantalla. 2) La función SaveAsFile sobrescribe el archivo existente. Entonces, DateTime puede ayudar a crear archivos diferentes.
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 le ayudará a tomar Tiro de pantalla
Sólo tiene que utilizar el método de extensión TakeScreenshot() en una sola línea de código.
IWebDriver driver = new InternetExplorerDriver();
driver.Navigate().GoToUrl("Your_Homepage_Url");
driver.TakeScreenshot().SaveAsFile("file_name_string", ImageFormat.Jpeg);
Tenga en cuenta que el método 'TakeScreenshot()' es un método de extensión que requiere que se instale el paquete 'Selenium.Support' NuGet. – thecodefish
@Deeb '' 'ImageFormat''' ahora está obsoleto use en su lugar' '' ScreenshotImageFormat'''. – TotPeRo
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 sea útil para usted ....!
Explique su respuesta que cubre exactamente cómo este enfoque logra el resultado deseado y por qué funcionará. Esto realmente ayudaría al conocimiento del OP. – Bluetree
- 1. Selenium se ejecuta como un servicio de Windows para tomar capturas de pantalla en los errores
- 2. C# biblioteca para tomar capturas de pantalla?
- 3. Cómo tomar capturas de pantalla en Android 2.3.3 sin raíz?
- 4. Cómo tomar capturas de pantalla rápidamente en Java?
- 5. ¿Cuál es la mejor manera de tomar capturas de pantalla de una ventana con C++ en Windows?
- 6. Selenium 2 (webdriver): Tomar una captura de pantalla devuelve una imagen negra
- 7. DrawToBitmap no tomar capturas de pantalla de todos los elementos
- 8. ¿Cómo tomar capturas de pantalla del emulador usando Eclipse?
- 9. capturas de pantalla de watir-webdriver black
- 10. Ejecutar pruebas de Selenium 2 contra el navegador remoto
- 11. Ruta de capturas de pantalla en Android
- 12. ¿Cuál es la mejor manera de organizar las pruebas de Selenium con PHPUnit?
- 13. Tome capturas de pantalla del control WebBrowser
- 14. ¿Automatiza las capturas de pantalla en el simulador de iPhone?
- 15. La mejor manera de comparar 2 documentos XML en .NET
- 16. Deshabilitar capturas de pantalla en Android ics
- 17. ¿Cómo puedo tomar capturas de pantalla de páginas web usando Ruby y un servidor Unix?
- 18. ¿Cómo puedo tomar capturas de pantalla de páginas web con Perl?
- 19. Capturas de pantalla de captura mediante programación en OSX
- 20. OCR de texto de baja resolución de capturas de pantalla
- 21. ¿La mejor manera de implementar DropDownList en ASP.NET MVC 2?
- 22. Selenium 1 vs 2
- 23. Selenium Grid + Maven 2
- 24. Tomar captura de pantalla de una página web (remota) programáticamente
- 25. ¿Cómo tomar la captura de pantalla programáticamente?
- 26. ¿Capturas de pantalla web generadas por servidor?
- 27. La mejor manera de realizar pruebas de software
- 28. La forma más rápida de tomar una captura de pantalla con Python en Windows
- 29. beamer includegraphics con capturas de pantalla
- 30. Creando capturas de pantalla del iPhone 5
¡Gracias! Así que tengo la cadena para el nombre de archivo "C: \\ .. ruta ... \\ pantalla.png", pero nunca aparece allí. – James
Reemplace este código de arriba: "Captura de pantalla ss = driver.GetScreenshot();" ... con este código: "Captura de pantalla ss = ((ITakesScreenshot) webDriver) .GetScreenshot();" – MacGyver
Si usa .NET 4.0 y Selenium .NET 4.0 controladores, deberá agregar explícitamente una referencia a System.Drawing (Agregar referencia> pestaña .NET> System.Drawing) si creó su proyecto de biblioteca de clase en Visual Studio 2010 ... luego llame para guardar el archivo en alguna parte: "ss.SaveAsFile (@" C: \ ss.png ", System.Drawing.Imaging.ImageFormat.Png);" – MacGyver