Prendre une capture d'écran sur l'échec du test + exceptions
Ne vous savez solution possible pour prendre des captures d'écran sur les échecs de tests et des exceptions?
J'ai ajouté le code suivant dans TearDown()
mais comme un résultat, il fait aussi des captures d'écran sur le passé des tests, de sorte qu'il n'est pas la meilleure solution:
DateTime time = DateTime.Now;
string dateToday = "_date_" + time.ToString("yyyy-MM-dd") + "_time_" + time.ToString("HH-mm-ss");
Screenshot screenshot = ((ITakesScreenshot)driver).GetScreenshot();
screenshot.SaveAsFile((settings.filePathForScreenShots + "Exception" + dateToday + ".png"), System.Drawing.Imaging.ImageFormat.Png);
J'ai déjà trouvé cette idée: http://yizeng.me/2014/02/08/take-a-screenshot-on-exception-with-selenium-csharp-eventfiringwebdriver/, à utiliser WebDriverExceptionEventArgs
, mais pour certaines raisons, il fait aussi quelques captures d'écran aléatoire, sans aucune explication raisonnable.
D'autres idées que j'ai trouvé sont pour Java et pas pour NUnit que j'utilise avec le Sélénium, aussi sont-ils assez inutile.
Vous devez vous connecter pour publier un commentaire.
Si vous mettez la capture d'écran de logique dans vos Démontage de la méthode, elle sera appelée après chaque test terminé, peu importe si elle a réussi ou échoué.
J'utilise une classe de base qui a une fonction qui enveloppe les tests et les captures de toutes les exceptions. Lorsqu'un test échoue, l'exception est interceptée et une capture d'écran est prise.
- Je utiliser cette classe de base pour tous mes Sélénium tests et il ressemble à quelque chose comme ceci:
Les classes de test alors ressembler à ceci:
En C# j'utilise NUnit 3.4. Ce propose la
OneTimeTearDown
méthode qui est en mesure d'accéder à laTestContext
y compris l'état de la précédente exécuté test. Ne pas utiliserTearDown
car il n'est pas exécuté après un test échoue 😉OneTimeTearDown
est seulement exécuté après tous les tests de l'appareil sont effectués.Donc, il va être trop tard pour obtenir toutes les captures d'écran.Vous pouvez atteindre facilement en TestNG Fichier de suite
Créer une méthode de Capture d'écran comme ci-Dessous
Dans la méthode ci-dessus, j'ai utilisé le robot de classe de sorte que vous pouvez prendre des capture d'écran de Dekstop aussi(fenêtre+Page) et vous pouvez appeler cette méthode dans différentes Auditeur classe qui implémente ITestListener Interface. appelez votre capture d'écran de la méthode dans OntestFailure() de cette Classe Écouteur
Ce code est de travailler pour moi. Mais ce code est écrit en JAVA. J'espère que cela va fonctionner en C# si pas je souhaite que ce code peut vous aider à