1

を使用してスクリーンショットをキャプチャするにはどうすればよいHtmlUnitDriverですか? 使用するとキャプチャできることがわかりましたが、FirefoxDriverFirefox を使用したくありません。そこで、 を使って画像をキャプチャする方法を教えてくださいHtmlUnitDriver

私はグーグルで検索しましたが、見つけた解決策はどれもうまくいきませんでした。助けてください!

4

2 に答える 2

2

Flyingsaucer は、(ブラウザでページを開かずに) ヘッドレスで Web ページのスクリーンショットを撮ることができる Java ライブラリです。次のコードは、"screenshot.png" という名前の画像にサイズ変更されたページ全体のスクリーンショットをキャプチャします。数値 1024 は、出力スクリーンショットの幅を指定します。ここでライブラリを見つけてください http://mvnrepository.com/artifact/org.xhtmlrenderer

import java.io.File;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import org.xhtmlrenderer.simple.Graphics2DRenderer;

public class RenderPage {

    public static void main(String[] args) throws Exception {
        try {
             String address = "http://www.w3.org";
             BufferedImage buff = Graphics2DRenderer.renderToImageAutoSize(address, 1024);
             ImageIO.write(buff, "png", new File("screenshot.png"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

メソッド Graphics2DRenderer.renderToImage(address,1024,1024); を使用することもできます。スクリーンショットの独自のサイズを定義します。

スクリーンショットが電話でレンダリングされたかのように見えることがわかります。これがなぜなのかはわかりませんが、Flyingsaucer のブラウザー バージョンをどこかで変更して、別のブラウザーでページをエミュレートできるのではないかと推測しています。

もう 1 つ、このコードは www.google.com のスクリーンショットを作成しませんが、このタイプのエラーは、JTidy というライブラリを使用してページ ソースを整理することで解決できるようです。

于 2015-11-21T08:05:17.457 に答える
-1

HtmlUnitDriver は GUI レスです。参照:ここ

多分あなたは以下を使うことができます:

BufferedImage image = new Robot().createScreenCapture(newRectangle(Toolkit.getDefaultToolkit().getScreenSize()));
ImageIO.write(image, "png", new File("/screenshot.png"));

ソース

于 2015-02-16T03:10:57.513 に答える