Ho bisogno di un modo per fare screenshot dei miei test funzionali. In questo momento sto usando Selenium 2 con associazioni C#. Praticamente voglio fare uno screenshot alla fine del test per assicurarmi che venga visualizzata la pagina desiderata. Ci sono degli strumenti particolari che voi conoscete che posso incorporare nel mio codice C# che attiverà uno screenshot? Non sono riuscito a trovare una soluzione di Selenium 2 integrata (senza guardarla).Il modo migliore per fare screenshot di test in Selenium 2?
risposta
Per fare screenshot in Selenio 2 è necessario eseguire le seguenti operazioni
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;
Tale codice dovrebbe funzionare, come ho subito provato in IronPython Repl. Vedere il codice di IronPython sotto
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 il selenio c'erano due chiamate che conoscevo: captureEntirePageScreenshot
e captureScreenshot
. Potresti voler esaminare quelle chiamate per vedere se riusciranno a ottenere ciò che cerchi.
quelle chiamate sono 1 specifico di selenio 1 – AutomatedTester
la mia risposta di seguito mostra come farlo con selenio 2. P. Non ti ho votato – AutomatedTester
Non so se è importante, ma ho finito per dover lanciare il conducente quando scrivevo in C#.
qualcosa di simile:
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);
- Aggiungere un riferimento di
System.Drawing
nella soluzione/progetto. - Utilizzare lo spazio dei nomi
System.Drawing.Imaging
nel test.
Qui sto catturando la schermata della home page di 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;
}
}
}
Utilizzare System.Drawing.Imaging riferimento. Il seguente codice può essere utilizzato per scattare screenshot.
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);
Note: timestamp ha due vantaggi: 1) si arriva a conoscere il DateTime perfetta quando è preso screenshot. 2) La funzione SaveAsFile sovrascrive il file esistente. Quindi, DateTime può aiutare per la creazione di file diversi.
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);
}
Questo codice vi aiuterà a prendere screenshot
Basta usare il metodo di estensione TakeScreenshot() in una riga di codice.
IWebDriver driver = new InternetExplorerDriver();
driver.Navigate().GoToUrl("Your_Homepage_Url");
driver.TakeScreenshot().SaveAsFile("file_name_string", ImageFormat.Jpeg);
Si noti che il metodo 'TakeScreenshot()' è un metodo di estensione che richiede l'installazione del pacchetto NuGet 'Selenium.Support'. – thecodefish
@Deeb '' 'ImageFormat''' ora è deprecato usare' '' 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();
Prova questo codice qui fuori ... spero che sia utile a voi ....!
Spiega la tua risposta spiegando esattamente in che modo questo approccio raggiunge l'output desiderato e perché funzionerà. Ciò aiuterebbe davvero le conoscenze dell'OP. – Bluetree
- 1. Come ottenere Spoon per fare screenshot per i test dell'Espresso?
- 2. È possibile fare uno screenshot dell'intera pagina con Selenium/Capybara?
- 3. Come eseguire test Selenium 2 in Jenkins
- 4. Il modo migliore per confrontare 2 URL
- 5. Il modo migliore per fare un timer in UNIX
- 6. Il modo migliore per fare enum in Sqlalchemy?
- 7. Il modo migliore per fare questo tipo di ombra esterna?
- 8. Come si esegue Firebug in Selenium WebDriver (Selenium 2)?
- 9. Il modo migliore per OR 2 stringhe di 0,1
- 10. Selenium 1 vs 2
- 11. SmartWatch 2 screenshot
- 12. Come fare uno screenshot in modo programmatico su iOS?
- 13. Il modo migliore per unire 2 tabelle utilizzando la sospensione
- 14. Gestione degli avvisi in Selenium WebDriver (selenium 2) con Java
- 15. Come fare una selezione dell'area screenshot disegnando sul desktop per fare screenshot?
- 16. Riavvia automaticamente il test in TestNG/Selenium
- 17. un modo migliore per fare ajax in django
- 18. Qual è il modo migliore per utilizzare Selenium PageObject Design Pattern
- 19. Il modo migliore per fare in modo che il reel gira
- 20. modo migliore per fare gli inserimenti di massa utilizzando dapper.net
- 21. Selenium 2 (webdriver): la cattura di uno screenshot restituisce un'immagine nera
- 22. Qual è il modo migliore per fare una trama a matrice di correlazione come questa?
- 23. C'è un modo per fare uno screenshot del desktop di Windows dell'utente?
- 24. C'è un modo diverso dal metodo miniatura per fare uno screenshot di un video in Iphone?
- 25. Il modo migliore per "negare" un'istanza di
- 26. Come fare screenshot sotto Wayland?
- 27. Come eseguire uno screenshot parziale con Selenium WebDriver in python?
- 28. Nightwatch: modo migliore di `.pause (1000)` per evitare test fragili?
- 29. Il modo più veloce per fare uno screenshot con python su windows
- 30. Esegui test selenio 2 contro il browser remoto
Grazie! Quindi ho la stringa per il nome del file "C: \\ .. path .. \\ screen.png", ma non appare mai lì. – James
Sostituisci questo codice sopra: "Screenshot ss = driver.GetScreenshot();" ... con questo codice: "Screenshot ss = ((ITakesScreenshot) webDriver) .GetScreenshot();" – MacGyver
Se si utilizza .NET 4.0 e Selenium .NET 4.0 driver, dovrai aggiungere esplicitamente un riferimento a System.Drawing (Aggiungi riferimento> scheda .NET> System.Drawing) se hai creato il tuo progetto di libreria di classi in Visual Studio 2010 ... quindi chiama questo per salvare il file da qualche parte: "ss.SaveAsFile (@" C: \ ss.png ", System.Drawing.Imaging.ImageFormat.Png);" – MacGyver