Prise de capture d'écran à l'aide de Selenium 3.6-Java-Webdriver


Je ne suis pas en mesure de 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 paquets requis.

Quelqu'un Peut m'aider à prendre une capture d'écran?

Author: DebanjanB, 2017-11-15

3 answers

Utilisation d'importation import org.apache.commons.io.FileUtils. Cela importe la classe FileUtils dont vous avez besoin.

Devinez que vous importez un mauvais paquet

Vérifiez que ces paquets doivent ê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
Author: iamsankalp89, 2017-11-15 12:11:24

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

  • Utiliser uniquement:

    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
Author: DebanjanB, 2017-11-15 12:22:04

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 correct .

 0
Author: nanukvs, 2017-11-16 22:23:57