ホームページ >バックエンド開発 >Python チュートリアル >Python で Selenium を使用した Web ページのスクリーンショットの例

Python で Selenium を使用した Web ページのスクリーンショットの例

WBOY
WBOYオリジナル
2016-06-16 08:43:061356ブラウズ

Selenium は、ブラウザーが一連のタスクを自動的に実行できるようにするツールで、自動テストによく使用されます。ただし、Web ページのスクリーンショットを撮るために使用することもできます。現在、Java、C#、Ruby、Python の 4 つのクライアント言語をサポートしています。 Python を使用する場合は、コマンド ラインに「sudo easy_install selenium」と入力して Enter キーを押すだけで、Python バージョンの Selenium クライアント サポートをインストールできます。

Python を例に挙げると、次のスクリプトを使用して、指定したページ (スクリプト ホーム ホームページなど) のスクリーンショットを撮ることができます。

# -*- coding: utf-8 -*-
#
# author: oldj <oldj.wu@gmail.com>
#

from selenium import webdriver
import time


def capture(url, save_fn="capture.png"):
  browser = webdriver.Firefox() # Get local session of firefox
  browser.set_window_size(1200, 900)
  browser.get(url) # Load page
  browser.execute_script("""
    (function () {
      var y = 0;
      var step = 100;
      window.scroll(0, 0);

      function f() {
        if (y < document.body.scrollHeight) {
          y += step;
          window.scroll(0, y);
          setTimeout(f, 50);
        } else {
          window.scroll(0, 0);
          document.title += "scroll-done";
        }
      }

      setTimeout(f, 1000);
    })();
  """)

  for i in xrange(30):
    if "scroll-done" in browser.title:
      break
    time.sleep(1)

  browser.save_screenshot(save_fn)
  browser.close()


if __name__ == "__main__":

  capture("http://www.jb51.net")

上記のコードでは、ページを開いた直後にスクリーンショットを撮っていないことに注意してください。代わりに、ページのスクロール バーを一番下にドラッグしてから、ページ上で JavaScript スクリプトを実行しました。トップに戻って、スクリーンショットを撮りました。この利点は、ページの下部に遅延読み込みコンテンツがある場合、通常はこの操作の後にコンテンツが読み込まれることです。

PageSaver などのブラウザ プラグインと比較すると、Selenium はより強力です。たとえば、ページ上で JS を挿入して実行したり、マウス クリックやその他の動作をシミュレートしたり、複数のインスタンスを実行したりできます。スレッド)と同時にスクリーンショットを撮ります)。この観点からすると、Selenium を使用してページのスクリーンショットを撮るのは良い選択のように思えます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。