何が問題なんでしたっけ?
昔のFirefoxは全画面キャプチャが取れたけど、geckodriver 経由で操作するようになったあたりから、キャプチャが可視範囲でしかとれなくなった。
そもそもブラウザごとばらばらであり、そういうものらしい。
参考: https://qiita.com/meganetaaan/items/b11338d2867c8c8f072a
ということで、どうしても全画面キャプが欲しいときは、JSで可視範囲を動かし、画像を結合する方法が上の記事でも紹介されています。
僕もこれを参考にいままでやっておりました。でも、サイドバーついてきちゃったり、なんか遅延表示とかでずれたり、縦に長い画面で時間がかかったり、ギャア! しんどい! ってなって。具体的には昨日なって。
要件にもよるのですが、表示されてること分かれば良いとか、ゆるい要件の場合、もっとサクッとやりたい気持ちがある。で、ちょっと試行錯誤してたら、なんか出来た。
結論から
言ってしまえば簡単なんだけど、windowのサイズを内部のサイズにあわせて広げたらうまくいった。一発で撮れるし楽すぎる。
- Ubuntu 16
- Firefox 61.0.1
- GeckoDriver 0.18.0
- Python 3.6.1
- Selenium 3.4.3
test.py
url = ''
img_file_save_path = ''
driver = webdriver.Firefox()
driver.get(url)
total_width = driver.execute_script("return document.body.offsetWidth")
total_height = driver.execute_script("return document.body.parentNode.scrollHeight")
driver.set_window_size(int(total_width), int(total_height))
time.sleep(2)
driver.save_screenshot(img_file_save_path)
補足
ほかのOSでできるかやってないのと、ずっとできるかは知らない。
おしまい