[6] 物理形を得ると似ていますが、物理形を得るのは画面表示と別のレンダリングであるのに対して、 スクリーンショットは画面表示の一部と同等の出力を得るものであります。
[1] Take Element Screenshot を GeckoDriver は実装済みですが、 ChromeDriver は未実装です。
[4] ChromeDriver も GeckoDriver も、 Take Screenshot は実装しています。
[2] 1598731 - Taking huge screenshots crashes Firefox: [Exception... \"Data conversion failed because significant data would be lost\"] () https://bugzilla.mozilla.org/show_bug.cgi?id=1598731
(500
)
{"value":{"error":"unknown error","message":"[Exception... \x5C"Data conversion failed because significant data would be lost\x5C" nsresult: \x5C"0x80460003 (NS_ERROR_LOSS_OF_SIGNIFICANT_DATA)\x5C" location: \x5C"JS frame :: resource://gre/modules/AsyncShutdown.jsm :: observe :: line 551\x5C" data: no]","stacktrace":"observe@resource://gre/modules/AsyncShutdown.jsm:551:16\x5Cnobserve@resource:///modules/ContentCrashHandlers.jsm:177:28\x5Cn"}}
[3] >>2 が生じるとそのセッションが以後エラーしか返さなくなります。
[12] >>2 の次はこんなエラーが返されるので、閲覧文脈が利用不能になるっぽいです。
(404
)
{"value":{"error":"no such window","message":"Browsing context has been discarded",
[13] >>12 の次はこんなエラーが返されます。 >>12 で残存セッションが破棄されるのですかね。
(404
)
{"value":{"error":"invalid session id","message":"Tried to run command without establishing a connection","stacktrace":""}}
[9] 修正済みになっているがいっこうになおらんのう
[11] 全然なおらんのう、他にも不具合があるのかね? 昔はちゃんと撮れてたんだが
[7] ChromeDriver は Take Element Screenshot を実装したようです。
[10] ChromeDriver の Take Element Screenshot は、 要素のサイズでスクリーンショットが撮られますが、 要素の位置でくり抜いているのか、 表示されていない領域は空白になり、 viewport のスクロールバーが写っていることもあります。
[14] WebDriver なら命令を実行するだけですが、閲覧文脈内の文書のスクリプトからは直接取得できません。
[15] ss.js, https://gist.github.com/wakaba/f91282ad9f6a4538b46e1b8a1493addb
[16] >>15 これは
getDisplayMedia
でスクリーンショットを撮りつつスクロール位置を変化させてつなぎ合わせて全体を構成する実装例。