Incapable de prendre une capture d'écran en Sélénium
Je suis en train de capturer une capture d'écran pour chaque panne survenue et écrit à la suite du code, mais ce n'est pas de travail.
public class TestFile {
WebDriver driver = new FirefoxDriver();
@Test
public void Testone(){
driver.get("http://www.google.com/");
}
@AfterMethod(alwaysRun=true)
public void catchExceptions(ITestResult result){
System.out.println("result"+result);
String methodName = result.getName();
System.out.println(methodName);
if(!result.isSuccess()){
try {
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile,new File("C:\\screenshot2.png" ));
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
C'est la faute à
Fichier scrFile = ((TakesScreenshot)conducteur).getScreenshotAs(Typesortie.FICHIER);
trace de la pile:
[TestNG] Running:
C:\Documents and Settings37310\Local Settings\Temp\testng-eclipse-1576306112\testng-customsuite.xml
result[TestResult name=Testone status=FAILURE method=TestFile.Testone()[pri:0, instance:com.example.tests.TestFile@1b34126] output={null}]
FAILED CONFIGURATION: @AfterMethod catchExceptions([TestResult name=Testone status=FAILURE method=TestFile.Testone()[pri:0, instance:com.example.tests.TestFile@1b34126] output={null}])
net.sf.cglib.core.CodeGenerationException: java.lang.IllegalAccessException-->Class org.openqa.selenium.remote.Augmenter$CompoundHandler can not access a member of class org.openqa.selenium.firefox.FirefoxDriver with modifiers "protected"
at net.sf.cglib.core.ReflectUtils.newInstance(ReflectUtils.java:235)
liste des importations:
package com.example.tests;
import org.testng.annotations.Test;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import org.apache.commons.io.FileUtils;
import org.junit.Before;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.remote.Augmenter;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.ITestResult;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
Qu'est-ce que la stacktrace?
Mis à jour avec stacktrace
Pouvez-vous partager vos importations?
niharika_neo : les importations sont mis à jour en question
Mis à jour avec stacktrace
Pouvez-vous partager vos importations?
niharika_neo : les importations sont mis à jour en question
OriginalL'auteur Pal | 2012-12-05
Vous devez vous connecter pour publier un commentaire.
La stacktrace vous partagé n'est pas la stacktrace, mais je pense que le testng journal.
L'exemple que vous avez fourni fonctionne réellement. Je viens de faire le test échoue, parce que dans le @AfterMethod une capture d'écran est prise que si le test échoue: si(!résultat.isSuccess())
Alors quand j'ai couru l'exemple encore une fois, j'ai eu:
java.io.FileNotFoundException: C:\screenshot2.png (Accès refusé)
Puis j'ai changé l'emplacement de la photo pour être sur D: où les autorisations sont correctes, et il a travaillé à la fin, je peux voir la capture d'écran.
Acclamations
OriginalL'auteur Sinisha Mihajlovski
Hi sinisa229 mihajlovski,
Votre script fonctionne correctement. mais il y a un léger changement dans votre script. Si je ne vais pas commenter la ligne "assert false", c'est donner de l'erreur.
Vous avez raison, si je commente l'assert false ligne, il est exécuté correctement, sans prendre la capture d'écran. Lorsque je supprime le commentaire, c'est de prendre la capture d'écran. Merci
OriginalL'auteur Umamaheshwar Thota
Essayez Ceci :
En place de
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
Êtes-vous à l'aide du pilote.quit() ou d'un pilote.close() avant d'exécuter le code de capture de l'écran?Je vous recommande de changer votre si la condition : if (pilote != null && pilote.getSessionId()!= null && !résultat.isSuccess())
La classe org.openqa.le sélénium.à distance.Augmentateur de$CompoundHandler ne peut pas accéder à un membre de la classe org.openqa.le sélénium.firefox.FirefoxDriver avec des modificateurs "protégés" ..Ce message est afficher
Pour le problème de & correctif pour que les exceptions, voir code.google.com/p/selenium/issues/detail?id=5087
OriginalL'auteur Abhishek_Mishra