Je ne parviens pas à prendre une capture d'écran dans mon projet. J'utilise la version Selenium 3.6 avec Java. Voici mon code:

File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("c:\\tmp\\screenshot.png"));

Malheureusement, le "copyFile" donne l'erreur suivante:

The method copyFile(File, File) is undefined for the type FileUtils

J'ai également importé tous les packages requis.

Quelqu'un peut-il m'aider à prendre une capture d'écran?

2
Jithin 15 nov. 2017 à 14:21

4 réponses

Meilleure réponse

Importer Utiliser import org.apache.commons.io.FileUtils. Cela importe la classe FileUtils dont vous avez besoin.

Je suppose que vous importez un mauvais package

Vérifiez que ces paquets devraient être là

import org.apache.commons.io.FileUtils;

import org.openqa.selenium.OutputType;

import org.openqa.selenium.TakesScreenshot;

Exemple de code:

public class Takenscreensshot {
    public static void main(String[] args) throws IOException {
        WebDriver driver=new FirefoxDriver();
        driver.get("https://www.google.co.in");
        File src=((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
        FileUtils.copyFile(src, new File("d:/ss.png"));
        driver.close();
    }
}
0
Thodoris Koskinopoulos 15 nov. 2017 à 12:11

L'erreur dit tout the "copyFile" is giving an error. It is saying "The method copyFile(File, File) is undefined for the type FileUtils". Il est possible que FileUtils ait plusieurs définitions dans vos importations. La solution serait donc la suivante:

  • Utiliser seulement:

    import org.apache.commons.io.FileUtils;
    

OU

  • Changez votre code comme:

    File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); 
    org.apache.commons.io.FileUtils.copyFile(scrFile, new File("C:\\tmp\\screenshot.png"));
    
0
DebanjanB 15 nov. 2017 à 12:22

Dans le tir de Selenium 3.6.0 FiltUtils n'est pas disponible, donc besoin d'utiliser FileHandler.

Voici les changements

  1. Remplacez import org.apache.commons.io.FileUtils; par import org.openqa.selenium.io.FileHandler;
  2. Remplacez FileUtils.copyFile(SrcFile, DestFile); par FileHandler.copy(SrcFile, DestFile);

Maintenant, le code pour prendre une capture d'écran ressemble à ci-dessous

TakesScreenshot scrShot =(TakesScreenshot)driver;
File SrcFile= scrShot.getScreenshotAs(OutputType.FILE);
File DestFile=new File(System.getProperty("user.dir")+"\\"+"screenshot.png");
FileHandler.copy(SrcFile, DestFile);

Pour plus d'informations, veuillez consulter ici.

0
Karthikeya 10 juin 2019 à 03:22

Essayer

String capture = "window.png";

    try {

        Thread.sleep(3000);

        byte screenshot[] = (byte[])((TakesScreenshot)driver).getScreenshotAs(OutputType.BYTES);

    FileOutputStream fos = new FileOutputStream(capture);
                fos.write(screenshot);

        }catch (Exception){ }

Cela fonctionne pour moi correctement.

0
nairavs 16 nov. 2017 à 22:23
47306079