java - 使用 Selenium 截图

标签 java selenium

所以我正在尝试使用 selenium 截取当前页面的屏幕截图。

我见过这样的代码示例

File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("location"));

但这仅在驱动程序声明为 FirefoxDriver

时有效
FirefoxDriver driver = new FirefoxDriver();

对于我的程序,我需要使用 HtmlUnitDriver

HtmlUnitDriver driver = new HtmlUnitDriver();

因为我想要 headless 浏览器,因为 FireFoxDriver 打开 firefox,然后执行所有操作。

无论如何我都可以使用 HtmlUniteDriver 截取屏幕截图,或者无论如何我可以使用另一个但没有浏览器显示所以它是 headless 的。

最佳答案

您可以做的一件事是创建您自己的 HtmlUnitDriver 扩展版本,它确实实现了 TakesScreenshot 接口(interface)。

class ExtendedHtmlUnitDriver extends HtmlUnitDriver implements TakesScreenshot {
  @Override
  public <X> X getScreenshotAs(OutputType<X> target) throws WebDriverException {
    final String base64 = execute(DriverCommand.SCREENSHOT).getValue().toString();
    return target.convertFromBase64Png(base64);
  }
}

然后你可以这样做:

HtmlUnitDriver driver = new ExtendedHtmlUnitDriver();
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("location"));

此代码不完整,但应该足以显示去向。

关于java - 使用 Selenium 截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19968754/

相关文章:

java - 在java中打印特定的用户输入

java - 使用 webdrivermanager-x.x.x.jar 时不下载/初始化浏览器驱动程序(没有 Maven)

Python selenium 同时按 ctrl + v

java - 如何在不修改旧数组或创建新数组的情况下向数组添加元素?

java - java中的文件处理

java - 如何处理 Google App Engine 中的 session ?

java - Jpanel中的放大缩小功能

Python Selenium 返回 HTML 位置

selenium - jmeter + Selenium iDE

java - 在 Jenkins 中使用 GeckoDriver Firefox 通过 Selenium Maven 建立与 WindowServer 的默认连接错误