このドキュメントは?
テストの自動化のハードルが高い方々に向けて、まず最初の一歩を踏み出しやすくするためのツールを作ろうと日々少しずつ作っている中で、「あれ?」と躓いたポイントをメモしておくためのページとして「つまずき記事」を作成したのだけど、1記事1ネタの方がいいなと思ったので「つまずき記事」はそのままにして新しいページを作成することにした。
結果的に皆さんの開発シーンの中で同じような躓きがあったら役立つかもしれないのと、何より忘れっぽい自分のための備忘録。
躓き
「つまずき記事」 の通り、aShot を使って Selenium の弱点・・・というよりは各ブラウザベンダが提供するドライバが実装するスクショ撮影機能の今見えている場所しかスクショが撮れないという弱点を補おうとしたものの、きれいに画面全体のスクリーンショットが撮れなかった。
Selenide さんがモジュールを作ってくれていた!
同僚エンジニアさんが見つけてくれたのですが、Selenide さんが full-screenshot というモジュールを作ってくれていた!ので、これを使います。
使い方
pom.xml
に、full-screenshot
を追加します。
<dependency>
<groupId>com.codeborne</groupId>
<artifactId>selenide-full-screenshot</artifactId>
<version>6.7.4</version>
</dependency>
こんなかんじで実装するだけで、全体のスクリーンショットが撮影されます。
FullSizePhotographer photographer = new FullSizePhotographer();
Path imagePath = Paths.get("image.png");
try {
Files.write(imagePath, photographer.takeScreenshot(WebDriverRunner.driver(), OutputType.BYTES).get());
} catch (IOException e) {
throw new RuntimeException(e);
}
Selenide
前提にはなってしまうけど、キレイに撮れるのは非常に助かりますね!
しかも、この機能を使うと「つまずき記事」で解決できていなかった固定ヘッダがスクロールすることで途中に撮影されちゃう問題も解決されます。すごい!(高解像度問題も発生しません)