סביבת הייצור של WebDriver BiDi זמינה ב-Firefox, Chrome ו-Puppeteer

Matthias Rohmer
Matthias Rohmer

בשבוע שעבר, יחד עם BrowserStack, הכרזנו ש-WebDriver BiDi הופך ל- מוכן לייצור ב-BrowserStack. השבוע של WebDriver BiDi ממשיך עם כל אחד ב-Firefox 129 וב-Puppeteer 23 מקבל תמיכה מוכנה לייצור עבור WebDriver BiDi!

Mozilla פועלת בשיתוף פעולה חזק ב-WebDriver BiDi במשך יותר מארבע שנים עכשיו, בהתחלה הוא עוזר לעצב את הסטנדרט החדש, ולאחר מכן ליישם בהדרגה אותו ב-Firefox, המתעד בצורה מסודרת את ההתקדמות שלו באמצעות הניוזלטר של Firefox WebDriver.

עם WebDriver BiDi, כבר מוכנה לייצור ב-Firefox, Puppeteer, מגרסה 23, מציע תמיכה יציבה ב-Firefox באמצעות WebDriver BiDi. כך אפשר לבצע אוטומציה Firefox עם אותו API תמציתי כמו ב-Chrome. התמיכה של בובנית Chrome ב-Chrome פרוטוקול DevTools Protocol (CDP) לא משתנה.

Firefox, CDP ו-Puppeteer

Puppeteer הוא כלי מהימן למפתחים לביצוע אוטומציה של דפדפנים המבוססים על Chromium באמצעות Chrome פרוטוקול DevTools, שמכונה גם CDP. בשנת 2019 'puppeteer' קיבלה תמיכה ניסיונית עבור Firefox.

כדי לעשות זאת, Mozilla הטמיעה ותחזק קבוצת משנה של CDP Firefox. הפתרון הזה מאפשר ל-Firefox להיות אוטומטי באמצעות ממשק ה-API של Puppeteer, אבל היו כמה אזהרות:

  • כפי שמשתמע מהשם, ה-CDP משמש את כלי הפיתוח של Chrome וצריך לשנות אותו לדרישות של כלי הפיתוח.
  • ה-CDP אינו סטנדרטי במפרט ציבורי משותף, ותחזוקה שלו ב-Firefox דרשה תקשורת יציבה במאמץ מסוים.
  • מכיוון ש-Firefox יישם רק קבוצת משנה של CDP, Puppeteer אף פעם לא היה להבטיח את ה-API המלא שלו לעבוד עם Firefox, דבר שיוצר בלבול אצל המשתמשים.

אנו שמחים להמשיך בתמיכה הזו יחד עם Mozilla עבור בשנים האחרונות תמיד ידענו שזה לא פתרון קבוע. פיתוח פתרונות וכולל ספקים גדולים אחרים של דפדפנים וכלים, ביחד יצרנו את WebDriver BiDi.

עבודת צוות מובילה לחלום

צוות Firefox פועל ללא הרף להטמעת WebDriver BiDi ב-Firefox. במקביל, צוות Puppeteer הרחיב את התמיכה ב-WebDriver BiDi דרך Puppeteer API. המטרה ששני הצוותים פעלו להשגתה הייתה להגדיר כל API שנדרש לתרחישים לדוגמה של אוטומציה בסביבת הייצור זמינה באמצעות WebDriver BiDi ב-Puppeteer, כדי להבטיח תמיכה גם ב-Chrome וגם Firefox.

מרכז בקרה משותף של צוות, שבו מוצג מספר הבדיקות שעברו בהצלחה במהלך החודשים האחרונים.
מרכז בקרה משותף של צוות, שבו מוצג מספר הבדיקות שעברו בהצלחה במהלך החודשים האחרונים.

כך משתמשי Puppeteer יכולים לבחור ב-Firefox או ב-Chrome לפעולות האוטומטיות שלהם, על ידי ציון מפתח ההגדרה של browser כשמפעילים Puppeteer מכונה.

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 ועל העבודות של Mozilla ב-WebDriver ב-BiDi אפשר לקרוא את הפוסט שקשור לנושא הזה בבלוג של Mozilla Hacks.

תמיכה ב-CDP בעתיד

קטע הקוד הקודם מראה שכדי להפוך את Chrome לאוטומטי באמצעות WebDriver BiDi עם Puppeteer צריך להגדיר במפורש את protocol webDriverBiDi. הסיבה לכך היא שעבור Chrome, Puppeteer ימשיך להשתמש כברירת מחדל CDP – כדי לא לפרוץ פעולות אוטומטיות קיימות אלא גם להמשיך לתמוך בפעולות אוטומטיות שספציפיות לתכונות של Chrome.

התמיכה ב-CDP ב-Firefox הוצאה משימוש מ-Firefox 129 מתוזמן להסרה בסוף 2024. אם יש לכם פעולות אוטומטיות קיימות שמסתמכות על תמיכה ב-CDP ב-Firefox אנחנו מאוד ממליצים מומלץ לעבור ל-WebDriver BiDi. אם זה לא אפשרי, עליך לפנות אל dev-webdriver@mozilla.org לתרחיש לדוגמה שלכם.