FileUtils 未显示在 selenium WebDriver 中为屏幕截图功能导入预定义 class 的建议

FileUtils not showing suggestion to import predefined class for Screenshot functionality in selenium WebDriver

我不允许在程序中使用 FileUtils,并且在这样做时显示错误。甚至没有建议显示导入此预定义 Class。我试图搜索解决方案,但我发现的是导入 class。但就我而言,即使是建议也没有显示要导入任何 class。将鼠标悬停在 "FileUtils" 上会显示创建 FileUtils class/interface 的建议。下面是我的代码:

 package captureScreenshot;

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils; //Getting Error at this line
import org.openqa.selenium.By;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.Test;

import com.google.common.io.Files;

public class FacebookScreenshot {

@Test
    public void captureScreenshot() throws IOException
{
    WebDriver driver = new FirefoxDriver();
    driver.manage().window().maximize();
    driver.get("https://www.facebook.com");
    driver.findElement(By.xpath("//input[@name='firstname']")).sendKeys("Anil Kumar");

    TakesScreenshot ts = (TakesScreenshot) driver;
    File source = ts.getScreenshotAs(OutputType.FILE);
    FileUtils.copyfile(source,new File("./Screenshots/facebook.png")); //Getting error at this line

    driver.quit();

    }

}

FileUtils Class

FileUtils Class 在 org.apache.commons.io.FileUtils 中定义,它提供 通用文件操作实用程序 在以下领域:

  • 写入文件
  • 从文件中读取
  • 创建一个包含父目录的目录
  • 复制文件和目录
  • 正在删除文件和目录
  • 与 URL
  • 相互转换
  • 按过滤器和扩展名列出文件和目录
  • 比较文件内容
  • 文件上次更改日期
  • 计算校验和

org.apache.commons.io 默认与 selenium-server-standalone-x.y.z 捆绑在一起并可用使用。

但是您观察到的行为与您提到的 不允许使用 FileUtils[的 用例 非常一致 在程序中。它可以是以下任何一种情况:

  • 如果您使用来自 selenium-java-3.9.1 客户端的 JARsJAR 包含 org.apache.commons.io 未添加到您的项目中。
  • 如果你使用 Mavenselenium-java-3.9.1 客户端依赖模块包含 FileUtils Class 已被排除。

由于上述原因,当您在程序中提及 FileUtils 时,它不会显示任何导入 class 的建议。此外,如果您强行提供导入,它将在该行显示错误。

FileUtils.copyFile(); 行已更新为 FileHandler.copy()

是的,我们应该使用 Selenium 最新版本 FileHandler.copy() 它有效并且不会抛出任何错误。

// Take Screenshots example
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileHandler.copy(scrFile, new File("<your path>\screenshot.png"));

从以下位置下载 maven commons-io jar:https://mvnrepository.com/artifact/commons-io/commons-io 并将 jars 添加到项目中的构建路径