Webブラウザ操作自動化ツール
PlaywrightとSeleniumWebDriverの違いについて
会社で聞かれたけど「~らしい」的な答えしかできなかったので、改めて調べて理解しておく。
プロトコルの違い
Selenium : WebDriverProtocol
たとえば以下に説明がある。
ブラウザを自動操作するためのプロトコルで、ユーザーがブラウザでできることをすべて行えるようにするもの。
個々のブラウザに依存しない操作を抽象化したコマンドを提供する。(クリック、要素の状態を読む、など)
ブラウザベンダーによってサポートされ、ブラウザごとに公式のドライバー(=プロキシサーバー)を介して操作する。
仕様がW3Cの公式標準になっていて、各ブラウザベンダーがこれに準拠している形。
Flakyになりやすいとされていて、理由はHTTPリクエストで操作すること。ブラウザ操作が非同期で、リクエスト送信時とブラウザの状態変化のタイミングズレが起こる可能性がある。またブラウザの内部状態にはアクセスしないので、正確な把握が難しい。
WebDriver Bidi Protocol
WebDriver Protocolの後継で、開発中。双方向通信を使用してブラウザを自動操作する。
W3Cが策定中。
Playwrightなど : Chrome DevTools Protocol
WebSocketを介してブラウザと通信し、双方向にやりとりできる。そのため、ブラウザの内部機能にアクセスできる。
しかし、WebDriverProtocolのように標準が決まっていないので、ブラウザごとに固有のプロトコルがある。
ブラウザを操作したりデバッグしたり、やりとりするためのプロトコルで、ChromiumやChrome、その他Blinkベースのブラウザで使える。
---
参考