WebDriver BiDi - העתיד של אוטומציה בדפדפנים שונים

במאמר הקודם, בדקנו את פרוטוקולי האוטומציה הקיימים, כלומר WebDriver 'קלאסי' ו-Chrome DevTools Protocol ‏ (CDP), יחד עם היתרונות והמגבלות שלהם.

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

WebDriver BiDi
WebDriver 'קלאסי' פרוטוקול Chrome DevTools‏ (CDP)
תמיכה בדפדפנים שונים שליחת הודעות מהירה דו-כיוונית
תקן W3C מספקת שליטה ברמה נמוכה
כלי לבדיקה

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

התפיסה שמאחורי WebDriver BiDi.
החזון שמאחורי WebDriver BiDi

סטנדרטיזציה

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

קבוצת העבודה של WebDriver BiDi
קבוצת העבודה של WebDriver BiDi

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

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

  • מפרט: תהליך של בקשה לתגובות (RFC) לאיסוף משוב על ההצעה.
  • אימות: סדרה של בדיקות שאפשר להריץ בפלטפורמות שונות, ומייצגות את מקור האמת של כל הטמעות.
  • הטמעה: הדפדפנים מטמיעים את הפרוטוקולים בהתאם למפרט ועוברים את בדיקות האימות.

אתגרים

בקטע הזה נבחן את האתגרים שבהטמעת WebDriver BiDi, שמטרתו למצוא איזון בין תאימות, נוחות שימוש והטמעה.

מעבר לשכפול של CDP: אימוץ תאימות לדפדפנים שונים

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

הבטחת זמן אחזור קצר

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

תעדוף ארגונומיה בכתיבה מימין לשמאל

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

הבטחת היכולת להטמיע BiDi

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

התגברות על אתגרים

בקטע הזה נדון בשיטות שנעשה בהן שימוש כדי להתמודד עם האתגרים של הטמעת WebDriver BiDi.

יצירת אב טיפוס מהירה

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

תכנון שמתמקד בביצועים

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

דגש על בדיקות של פלטפורמות אינטרנט (WPT)

בדיקות פלטפורמת אינטרנט ממלאות תפקיד משמעותי בעבודות של BiDi. נכון לעכשיו, WPT מכסה את WebDriver 'קלאסי' ואת WebDriver BiDi, והוא משמש כמקור מידע מהימן לכל הטמעות. הבדיקות האלה נועדו להריץ ולהעביר אותן בהטמעות שונות, כדי להבטיח ביצוע עקבי של פרוטוקולים בדפדפנים שונים. זהו תנאי חיוני להצלחת WebDriver BiDi. התוצאה האחרונה של WPT במרכז הבקרה

מהי התוכנית וההתקדמות הנוכחית?

מומלץ לעיין בתוכנית העבודה של WebDriver BiDi כדי להבין את הכיוון של הפרויקט. מפת הדרכים נמצאת בשלבי פיתוח ומתפתחת כל הזמן.

סטטוס ההטמעה בדפדפנים השונים מופיע בבדיקות הפלטפורמה של האינטרנט האחרונות, כי זהו המקור המהימן.

כדי לעקוב אחרי ההתקדמות של הפרויקט, כדאי להתעדכן בציוני הדרך שלו.

מה הושג בשנת 2023? אנחנו מעדכנים אתכם על הפיתוחים האחרונים.

תמיכה ב-WebDriver BiDi: איך אפשר לעזור

אתם מתעניינים בעתיד של אוטומציית הדפדפן באמצעות WebDriver BiDi? כך תוכלו להביע תמיכה:

  • להיות בודקים ומשתמשים בשלב מוקדם, ולעזור לעצב את העתיד של WebDriver BiDi.
  • כדאי לשתף את כולם! אתם יכולים לשתף את הפרויקט ברשתות החברתיות באמצעות ההאשטאג ‎#WebDriverBiDi.
  • בקשת תמיכה אתם יכולים לשלוח בקשה להוספת תכונה או לבדוק אצל היוצרים של הכלים המועדפים עליכם מהם התוכניות שלהם לגבי אימוץ WebDriverBiDi.
  • להשתתף ב-RFC ולשלוח משוב על ממשקי ה-API.

שאלות נפוצות

האם WebDriver BiDi יחליף את פרוטוקול Chrome DevTools‏ (CDP)?

לא. דפדפנים מבוססי Chromium ימשיכו להשתמש ב-CDP למטרות ניפוי באגים, בעוד ש-WebDriver BiDi היא המפרט החדש שמיועד לענות על צורכי הבדיקה באמצעות ממשק API ארגונומי יותר.

Puppeteer משתמש ב-CDP, האם זה אומר ש-Puppeteer יוסר משימוש?

לא. עם זאת, WebDriver BiDi יאפשר ל-Puppeteer להפוך לכלי אוטומציה לדפדפנים שונים.

האם יש לכם מפת דרכים ציבורית?

כן, אפשר להיכנס למפת הדרכים שלנו ב-GitHub.