kakakakakku blog

Weekly Tech Blog: Keep on Learning!

Playwright for Python: screenshot() に指定できる便利なオプション3選

Playwright for Pythonpage.screenshot() でスクリーンショットを取得するときに指定できる「便利なオプション3選」を紹介する❗️

1. full_page

ウェブサイトのスクリーンショットを「全て」取得する場合 full_page オプションが使える💡デフォルトは False になっているけど,使う機会は多いと思う❗️以下のように実装できる.

page.screenshot(path='images/1_full.png', full_page=True)

2. clip

ウェブサイトのスクリーンショットを「部分的に」取得する場合 clip オプションが使える💡スクリーンショットを長期間残しておくと,アーカイブしておくファイルサイズも増えてくるため,本当に必要な部分に限定してスクリーンショットを取得しておくのは良いプラクティスだと思う❗️

  • x(軸にする x 座標)
  • y(軸にする y 座標)
  • width(横幅 px)
  • height(縦幅 px)

以下のように実装できる.

page.screenshot(path='images/2_clip.png', clip={'x': 150, 'y': 150, 'width': 400, 'height': 400})

3. mask

スクリーンショットの一部を「隠して」取得する場合 mask オプションが使える💡隠す箇所には Playwright for Python の Locator オブジェクトを配列で指定する.例えば kakakakakku blog の "ブログタイトル" と "記事タイトル" を隠すなら,以下のように実装できる.ドキュメントを確認したところ,現状だと色はピンク (#FF00FF) 固定になっていた.

page.screenshot(path='images/4_mask.png', mask=[page.locator('#title > a'), page.locator('.entry-title')])

今回試したサンプルコード

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto('https://kakakakakku.hatenablog.com/')

    page.screenshot(path='images/0_default.png')
    page.screenshot(path='images/1_full.png', full_page=True)
    page.screenshot(path='images/2_clip.png', clip={'x': 150, 'y': 150, 'width': 400, 'height': 400})
    page.screenshot(path='images/3_mask.png', mask=[page.locator('#title > a'), page.locator('.entry-title')])

    browser.close()