技術系で興味を持ったりなんだりしたことをたまーに書くブログです。最近はてなダイアリー放置しすぎて記事書くたびにはてな記法忘れるのではてなブログに移行しました。ライセンスの下に提供されています。OpenSource私が仕事で愛用しておりますオープンソースなライブラリにAShotというのがありまして:github.comこいつはSeleniumのスクリーンショットを超強力にしてくれるやつなのです。特定の要素だけのスクショ撮るとか、特定の要素を除外して撮るとか、関係ないところにぼかし処理を入れたりとか、さらに複数のイメージのdiffを取ってくれる機能まであって最高です。なんといっても一番多用しているのが、「ブラウザ上で見切れている部分もスクロールしながらスクリーンショットを取ってくれる」機能*1なんです。エビデンスを重視するエンプラな現場では。こいつには一つ問題があって、「固定ヘッダがあるページだとヘッダが写り込んで、代わりにページの内容の一部が隠れてしまうのです。こんなふうに(サンプルはW3Schoolsの例を参考にさせていただきました)。思って調べたんですが、どうもダメっぽく......こんなIssueが上がってました。menu.(雑な訳)Seleniumで(JavascriptExecutor)を使って要素の属性を変更できるじゃん。ヘッダーメニューを非表示にしてからスクショを撮るってのがぼくの解決策だ。撮り終わったら属性を元に戻す(テストでの振る舞いを変えたくないからね)。この変更でフルのスクリーンショットをカンペキに撮ることができたよ。黒いバーもメニューの重なりもなしでね。おおーーー、なるほどー。ヘッダ部分だけスクショ撮る。スクロールしながらスクリーンショットを撮る。bodyImage;}呼ぶ側はこんな感じ*2。引数で渡されたファイル名で保存するメソッドです。"test2");ちゃんとスクショ撮れた!メソッド名もいいかげんだし、JSのコードとか結構雑だし*3、テストもちゃんとやってないので、もちょっとブラッシュアップする必要がありそうですけど、まあ一応動いたので満足しました。