使用Selenium 3.6 - Java - Webdriver截取屏幕截图

时间:2017-11-15 11:21:09

标签: java selenium webdriver

我无法在我的项目中截取屏幕截图。我正在使用Selenium 3.6版本和Java。这是我的代码:

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

不幸的是,“copyFile”会出现以下错误:

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

我还导入了所有必需的包。

任何人都可以帮我截屏吗?

4 个答案:

答案 0 :(得分:0)

导入使用import org.apache.commons.io.FileUtils。这会导入您需要的FileUtils课程。

猜猜你导入了错误的包

检查这些包应该在那里

import org.apache.commons.io.FileUtils;

import org.openqa.selenium.OutputType;

import org.openqa.selenium.TakesScreenshot;

示例代码:

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();
    }
}

答案 1 :(得分:0)

错误说明全部the "copyFile" is giving an error. It is saying "The method copyFile(File, File) is undefined for the type FileUtils" FileUtils 可能在您的导入中有多个定义。所以解决方案如下:

  • 仅限使用:

    import org.apache.commons.io.FileUtils;
    
  

OR

  • 将您的代码更改为:

    File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); 
    org.apache.commons.io.FileUtils.copyFile(scrFile, new File("C:\\tmp\\screenshot.png"));
    

答案 2 :(得分:0)

尝试

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){ }

这对我来说是正确的。

答案 3 :(得分:0)

在Selenium 3.6.0 FiltUtils中无法使用,因此需要使用FileHandler。

以下是更改

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

现在获取截图的代码如下所示

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

有关更多信息,请查看here