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