我无法在我的项目中截取屏幕截图。我正在使用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
我还导入了所有必需的包。
任何人都可以帮我截屏吗?
答案 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。
以下是更改
import org.apache.commons.io.FileUtils;
替换为import org.openqa.selenium.io.FileHandler;
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。