Firefox, Chrome, Puppeteer에서 WebDriver BiDi를 사용하세요.

Matthias Rohmer
Matthias Rohmer

지난주에 BrowserStack과 함께 WebDriver BiDi를 발표하여 BrowserStack에서 프로덕션에 즉시 사용할 수 있습니다. 이번 주 WebDriver BiDi의 여름은 계속됩니다. Firefox 129 및 Puppeteer 23에서는 각각 WebDriver BiDi를 프로덕션 단계에서 지원합니다.

Mozilla는 지난 4년 동안 WebDriver BiDi와 협력해 왔습니다. 처음에는 새로운 표준을 정립하는 데 도움을 준 다음 Firefox WebDriver 뉴스레터를 통해 진행 상황을 깔끔하게 문서화했습니다.

이제 Firefox, Puppeteer(버전 23부터)에서 WebDriver BiDi를 사용하여 프로덕션에서 사용할 수 있습니다. WebDriver BiDi를 통해 Firefox에 대한 안정적인 지원을 제공합니다. 이를 통해 Chrome과 동일한 간결한 API를 갖춘 Firefox Puppeteer의 Chrome 지원 DevTools 프로토콜 (CDP)은 변경되지 않습니다.

Firefox, CDP 및 Puppeteer

Puppeteer는 개발자가 Chrome 브라우저를 사용하여 Chromium 기반 브라우저를 자동화할 수 있는 DevTools 프로토콜(CDP라고도 함) 2019년에 Puppeteer는 실험적 지원을 받았습니다. 다운로드해 보세요.

이를 실현하기 위해 Mozilla는 www.microsoft.com의 경우 Firefox 이 솔루션을 통해 Firefox는 Puppeteer API를 통해 자동화할 수 있었지만 에는 다음과 같은 주의사항이 있었습니다.

  • 이름에서 알 수 있듯이 CDP는 Chrome의 DevTools에서 사용되며 개발자 도구를 사용할 수 있습니다.
  • CDP는 공유된 공개 사양으로 표준화되어 있지 않으며 Firefox에서 이를 유지관리해야 하며 지속적인 커뮤니케이션이 필요하고 노력할 것입니다.
  • Firefox는 CDP의 하위 집합만을 구현했기 때문에 Puppeteer는 전체 API가 Firefox와 호환되기 때문에 사용자에게 혼란을 줄 수 있습니다.

Mozilla를 사용하여 계속 이러한 지원을 유지하게 되어 기쁘게 생각합니다. 해결책이 영구적인 해결책은 아니라는 것을 항상 알고 있었습니다. 이 목표를 기반으로 구축 기타 주요 브라우저 및 도구 공급업체 포함 함께 WebDriver BiDi를 만들었습니다.

팀워크, 꿈을 이뤄요

Firefox 팀은 Firefox에서 WebDriver BiDi를 구현하기 위해 열심히 노력하고 있습니다. 동시에 Puppeteer 팀은 WebDriver BiDi 지원을 확대해 왔습니다. Puppeteer API에서 제공할 수 있습니다 두 팀이 모두 추구하는 목표는 프로덕션 자동화 사용 사례에 필요한 모든 API 제공 Puppeteer에서 WebDriver BiDi를 사용하여 사용할 수 있으며 Chrome 및 Firefox

지난 몇 개월 동안 통과한 테스트 수를 보여주는 공유 팀 대시보드
지난 몇 개월 동안 통과한 테스트 수를 보여주는 공유 팀 대시보드

이를 통해 Puppeteer 사용자는 자동화를 위해 Firefox 또는 Chrome을 선택할 수 있습니다. Puppeteer 실행 시 browser 구성 키 지정 인스턴스를 만들 수 있습니다

import puppeteer from 'puppeteer';

const firefoxBrowser = await puppeteer.launch({
  browser: 'firefox', // WebDriver BiDi is used by default in Firefox.
});
const page = await firefoxBrowser.newPage();
...
await firefoxBrowser.close();

const chromeBrowser = await puppeteer.launch({
  browser: 'chrome',  
  protocol: 'webDriverBiDi', // CDP would be used by default for Chrome.
});
const page = await chromeBrowser.newPage();
...
await chromeBrowser.close();

Firefox 129의 새로운 기능과 WebDriver에서 Mozilla의 작업에 관해 자세히 알아보려면 BiDi는 관련 Mozilla Hacks 블로그 게시물을 참조하세요.

향후 CDP 지원 예정

위의 코드 스니펫은 다음을 사용하여 Chrome을 자동화하도록 합니다. Puppeteer가 포함된 WebDriver BiDi에서 protocol를 명시적으로 설정해야 함 webDriverBiDi입니다. 이는 Chrome의 경우 Puppeteer가 CDP—기존 자동화를 중단하지 않고 자동화를 계속 지원하기 위해 Chrome 기능에 특화되어 있습니다.

Firefox의 CDP 지원은 Firefox 129 및 2024년 말에 삭제될 예정입니다. Firefox에서 CDP 지원을 사용하는 기존 자동화가 있는 경우 WebDriver BiDi로 이전하는 것이 좋습니다. 그렇게 할 수 없는 경우 dev-webdriver@mozilla.org를 사용 사례로 바꿉니다.