Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PyCon JP 2022 - Playwright で 高機能ブラウザテスト

Mikumo
October 15, 2022

PyCon JP 2022 - Playwright で 高機能ブラウザテスト

『Webブラウザの自動テスト』してますか?
よく使われるツールとして、Selenium や Puppeteerなどがあります。
Pythonian と相性の良いPlaywright モジュールの利点をご紹介します。

Mikumo

October 15, 2022
Tweet

More Decks by Mikumo

Other Decks in Programming

Transcript

  1. @maikeru (mikumo) 自己紹介✍ 三雲 勇二 / mikumo プライム・ストラテジー株式会社 所属 ・KUSANAGI

    / WEXAL (WordPress などフレームワーク高速化) ・ハイパーオートメーション (自動化やAIなど) ・PRIME STUDY (Python模擬試験の提供中) PHP技術者認定機構 エバンジェリスト 特技: 資格試験の一夜漬け
  2. @maikeru (mikumo) Playwright Microsoft 製 ブラウザテストツール Selenium より拡張性を、 Puppeteer より利便性を、

    ざっくり表現するとそういうツール § 公式サイト https://playwright.dev § GitHub https://github.com/microsoft/playwright
  3. @maikeru (mikumo) 自己紹介✍ 三雲 勇二 / mikumo プライム・ストラテジー株式会社 所属 ・KUSANAGI

    / WEXAL (WordPress などフレームワーク高速化) ・ハイパーオートメーション (自動化やAIなど) ・PRIME STUDY (Python模擬試験の提供中) PHP技術者認定機構 エバンジェリスト 特技: 資格試験の一夜漬け もう⼀回 ⾃⼰紹介😊
  4. @maikeru (mikumo) Playwright for ... § 公式サイト https://playwright.dev/python/docs/library § GitHub

    https://github.com/microsoft/playwright-python 公式で多彩なプログラミング⾔語に対応
  5. @maikeru (mikumo) マルチブラウザ対応 # Chromium PC browser = playwright.chromium.launch() context

    = browser.new_context() # WebKit PC browser = playwright.webkit.launch() context = browser.new_context() # Firefox PC browser = playwright.firefox.launch() context = browser.new_context()
  6. @maikeru (mikumo) マルチブラウザ対応 # Chromium Mobile browser = playwright.chromium.launch() context

    = browser.new_context(**playwright.devices["Pixel 2"]) # WebKit Mobile browser = playwright.webkit.launch() context = browser.new_context(**playwright.devices["iPhone 11 Pro"])
  7. @maikeru (mikumo) ビデオレコーディング対応 # Video Recording browser = playwright.chromium.launch() context

    = browser.new_context( record_video_dir="./videos", record_video_size={"height": 768, "width": 1024}, )
  8. @maikeru (mikumo) Docker コンテナ実行 FROM mcr.microsoft.com/playwright/python:v1.24.0-focal 公式イメージの注意点 • ⽇本語環境は追加で⼊れましょう。 •

    Docker Hub には Playwright 公式イメージはありません。 • 公式イメージは Apple Silicon では動作しません。 • ヘッドレスモードで動作してください。
  9. @maikeru (mikumo) Playwright の弱点🤔 oとにかく知⾒や実例が少ない。 ▶ 英語で検索すると⾒つかる事が多い。 ▶ Puppeteer の実装例が参考になることもあるので拝借する。

    o実例が Python 以外の⾔語実装がヒットする。 ▶ 検索ワードを 『Playwright Python』と⾔語まで指定する。 o⾔語を超えてメソッドが統⼀されてない。 ▶ Node.js は Puppeteer に寄せているので感じがある。 ▶ PEP などコーディング規約程度の微妙な違いの場合はわかりやすい。
  10. @maikeru (mikumo) まとめ • Playwright では、他ツールより簡単で機能が豊富。 • 特にクロスブラウザテスト、ビデオレコーディング機能は便利。 • 知⾒や実例が少ないので、ユーザーが増えるとうれしい。

    • かといって、メリットが無ければ移⾏する必要はない。 • (LTでもスライドは際限なく増える。) • (私は Microsoft さんの回し者ではない。)
  11. @maikeru (mikumo) 参考記事 今⽇のお話は、 過去に書いた記事を ベースにしています。 • Qiita • Playwright

    • ブラウザ でググってみてください。 § Python と Playwright でブラウザを ⾃動操作させるコードを⾃動⽣成したよ https://qiita.com/mainy/items/3a9de19f440991f67f34