WebdriverCourse11

שיעור 16: Page Object Model

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

עשרות פעמים בעשרות דפים שונים במוצר, זה יהיה גם שיכפול קוד מיותר וגם (חשוב יותר) סיוט לתחזק, במידה ונגיד מחר צוות המפתחים ישנה את ה-ID Attribute של האלמנט מ-myID ל-SomeOtherID.

בשיעור זה נלמד על טכניקה שנקראת Page Object או Page Object Model  או Page Object Design Pattern … תלוי את מי שואלים, הטכניקה הזו מציעה לנו פתרון לבעיה שהוזכרה למעלה, בעזרתה נוכל למנוע שיכפולי קוד מיותרים וניתן עימה לתחזק את הקוד בצורה יעילה יותר. זוהי תהיה גם הפעם הראשונה שאנו נשתמש בתוכנית שלנו ביותר ממחלקה אחת (אותה מחלקה שעד כה גם הרצנו ממנה) – מה שאומר שאנו מתחילים להשתמש פה (ברמה הלוגית) בשכבות.

Page Object Model אומר בגדול שכל עמוד באפליקציה שלנו ייוצג על ידי מחלקה נפרדת, בכל מחלקה נממש את זיהוי האלמנטים שבעמוד. בתוכנית הראשית נקרא לכל אלמנט מתוך אותה מחלקה שלו ונפעיל עליו את המתודה שאנו רוצים. לא הבנתם כלום עד עכשיו ? לא נורא, דרך הדוגמא נוכל להבין את המודל טוב יותר.

בואו ניקח לצורך ההדגמה את דף הבית ודף צור קשר באתר הזה, עליהם אנו ניישם את עקרון ה-Page Object. בדף צור קשר נבחין כי יש לנו ארבעה שדות (שם, מייל, נושא ותוכן) וכפתור אחד (שליחה).

ניצור מחלקה לדף הבית ובה נזהה את האלמנט של הקישור לדף צור קשר (בעיקרון עליי לממש את זיהוי של כל שאר האלמנטים בדף, אך נכון לעכשיו, למען ההדגמא אתמקד רק באלמנט הזה):

מה ראינו פה ? מחלקה של דף הבית המכילה פונקציה אחת המייצגת זיהוי של לינק הדף צור קשר ומחזירה את האלמנט שהיא מצאה.

 

* רוצים לראות את המשך הפוסט ? צרו עימי קשר ונקבע פגישה לקורס פרונטלי

 


arrowBack arrowMain arrowFor

6 comments

  • נתנאל

    היי יוני

    לא הבנתי מה מטרת השורה:

    private static WebElement element = null;

    • יוני פלנר

      היי,
      המשמעות היא להצהיר על האובייקט element לפני השימוש בו אח”כ
      בברכה,
      יוני

  • דניאל שמיוביץ

    היי יוני,
    רציתי לדעת איך אני יכול לבצע בדיקה שהדף עלה כראוי כלומר code 200

    • יוני פלנר

      היי דניאל,
      אתה יכול לבדוק את זה באוטומציה , אבל לא דרך Selenium (לזה אין קשר), למשל דרך אחת מספריות של ה- Testing API שקיימות בכל שפת תכנות
      יוני

  • דניאל שמיוביץ

    היי יוני,
    אז איך אני יכול לבדוק באוטומציה שהדף עלה בצורה תקינה?
    ומה זה אומר בספריות Testing API ?

    • יוני פלנר

      זה כבר לא קשור לפוסט הזה של page objects , שלח לי מייל על זה ואנסה לעזור לך
      יוני

כתיבת תגובה

האימייל לא יוצג באתר. (*) שדות חובה מסומנים

היי, אני לא רובוט *

תגי HTML מותרים: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">