Puppeteer מדבר עכשיו עם Firefox! 🎉 אבל רגע, כבר לא? 🤔 נצלול ל-WebDriver BiDi, הפרוטוקול החדש ב-Puppeteer, ונגלה מה המשמעות של הפיתוח המרגש הזה לתהליך העבודה של האוטומציה ב-Firefox.
WebDriver BiDi הוא פרוטוקול אוטומציה חדש וסטנדרטי לדפדפנים שונים, שמשתלב עם הטוב ביותר מ-WebDriver Classic ו-Chrome DevTools Protocol (CDP). הוא מבטיח תקשורת דו-כיוונית, שמאפשרת אוטומציה יעילה ויעילה יותר, ושליטה פרטנית. אפשר לעקוב אחרי ההתקדמות בתוכנית העבודה הרשמית.
מאז עדכון הסטטוס הקודם שלנו, המשכנו לעבוד בשיתוף פעולה הדוק עם קבוצת העבודה של W3C לבדיקת דפדפנים וכלים. הודות לשיפורים ב-WebDriver BiDi, Puppeteer מטמיע עכשיו תכונות כמו רישום ביומן, אירועי רשת ושליחת טפסים.
הצגת הקוד
הסקריפט הבא של Puppeteer מדגים את WebDriver BiDi בפעולה, והוא פועל בצורה חלקה ב-Chrome וב-Firefox:
- פותחים את הדפדפן שבחרתם עם הגדרת הפרוטוקול.
- מעקב אחר הודעות שגיאה במסוף.
- עוברים לדף אינטרנט, מגדירים את המאפיינים של אזור התצוגה ולוחצים על לחצן.
- אימות תוכן הטקסט וטענת נכוֹנוּת.
import * as assert from 'node:assert';
import puppeteer from 'puppeteer';
// Arrange: Launch browser with WebDriver BiDi
const browser = await puppeteer.launch({
protocol: 'webDriverBiDi',
product: 'firefox', // or 'chrome'
});
const context = await browser.createIncognitoBrowserContext();
const page = await context.newPage();
// Arrange: Monitor console messages
page.on('console', message => {
if (message.type() != 'error') return;
console.log('RECEIVED: %s', message.text());
});
// Action
await page.setViewport({width: 600, height: 1041});
await page.goto('https://coffee-cart.app/?breakable=1');
const coffee = await page.waitForSelector('[data-test="Espresso"]');
await coffee.click();
// Assert
const checkout = await page.$('[data-test="checkout"]');
const total = await checkout.evaluate(el => el.textContent);
assert.equal(total, 'Total: $10.00');
browser.close();
ההתקדמות של WebDriver BiDi ב-Puppeteer
כדי להעריך את היכולות של WebDriver BiDi ב-Puppeteer, השתמשנו בחבילת הבדיקות המלאה של Puppeteer. ההטמעה של Puppeteer ו-WebDriver BiDi עדיין נמצאת בתהליך פיתוח, ועדיין אין בה את כל התכונות של Puppeteer עם Chrome ו-CDP. עם זאת, אנחנו רוצים לתת לכם תמונה ברורה לגבי המצב הנוכחי.
Firefox:
- WebDriver BiDi הגיע לרמת איכות שמתאימה למשימות אוטומציה מעשיות. ב-Mozilla העבירו את בדיקות Puppeteer ל-pdf.js מ-Firefox ו-CDP ל-Firefox ול-WebDriver BiDi.
- יותר מ-55% מהבדיקות עוברות בהצלחה באמצעות WebDriver BiDi, דבר שמוכיח את הפונקציונליות ההולכת וגדלה שלו.
- ראוי לציין שב-82 בדיקות חדשות נעשה שימוש יעיל ב-WebDriver BiDi, ומכאן אפשר להבין שאנחנו מתכוונים להוסיף עוד שיפורים.
Chrome:
- נכון לעכשיו, שיעור הצלחה של Chrome עם WebDriver BiDi הוא 68%, מה שמצביע על פונקציונליות מהימנה. יש מקום לשיפור נוסף של האופטימיזציה בהשוואה לגישה שמבוססת על CDP, אבל יש כאן הבטחה לפיתוחים מעניינים בעתיד.
תכונות מסוימות, כמו גישה לקובצי cookie, תיעוד של בקשות רשת, תכונות ספציפיות של הדמיה והרשאות, עדיין נמצאות בתהליך סטנדרטיזציה פעיל. הם ישולבו ב-Puppeteer כשיהיו מוכנים. בינתיים, כדאי לעיין ברשימה המלאה של התכונות של Puppeteer שנתמכות על ידי WebDriver BiDi.
האם Puppeteer כבר לא תומך ב-Firefox?
בעבר, Puppeteer הציע תמיכה ניסיונית ב-Firefox באמצעות הטמעה מוגבלת של CDP שלא פועלת בכל הדפדפנים. הפתרון הזה היה מוגבל ולא היה פתרון בר-קיימא.
ההטמעה הניסיונית החדשה של BiDi ב-Firefox וב-WebDriver פותרת את הבעיות האלה.
אנחנו יודעים שיכול להיות שיש לך שאלות נוספות, כמו:
- האם תמיכת CDP ב-Firefox תבוטל?
- האם יש תמיכה בכל התכונות של Puppeteer?
תשובות מפורטות ומידע נוסף זמינים בהודעה הייעודית של Firefox.
צפויים ימים מעניינים
בדיקה בכמה דפדפנים היא אחד מהצרכים העיקריים של המפתחים, ולכן אנחנו שמחים להוביל את השילוב של WebDriver BiDi ב-Puppeteer. השילוב הזה מסמן נקודת מפנה לעבר חוויית אוטומציה חלקה ויעילה יותר בכמה דפדפנים. מומלץ לבדוק את WebDriver BiDi עם Puppeteer.
בעתיד, WebDriver BiDi יהפוך בסופו של דבר לפרוטוקול ברירת המחדל של Puppeteer, ויאפשר חוויית אוטומציה עקבית וחזקה יותר.
אם נתקלתם בבעיות במהלך הפעלת בדיקות Puppeteer עם WebDriver BiDi, תוכלו לפתוח בעיות במערכת למעקב אחר בעיות ב-Puppeteer.