PracticU

Page Object Design עם Explicit Wait

בלי כתוביותעם כתוביות
PracticU › קורס סלניום מתקדם - CI/CD - Continues Integration › Page Object Design עם Explicit Wait
מילון מושגים:
אובייקט - יחידה בתכנות מונחה עצמים שמאגדת נתונים (תכונות) ופעולות (מתודות). נוצר בדרך כלל ממחלקה המשמשת כתבנית.
תנאי - ביטוי לוגי בקוד שתוצאתו אמת או שקר, וקובע אילו פקודות יתבצעו בהתאם לערכו.
דיבאג - תהליך של איתור, הבנה ותיקון תקלות בקוד, לעיתים בעזרת כלי שמאפשר לעצור ולעקוב אחר ריצת התוכנית.
מתודה - פונקציה המוגדרת בתוך מחלקה ומתארת פעולה שאובייקטים מאותה מחלקה יכולים לבצע.

Page Object Design עם Explicit Wait
נוסף לקלאס הבסיס מנגנון של המתנה מפורשת, explicit wait, כדי שהטסטים יהיו יציבים כשהדף נטען לאט.
למה צריך המתנה
הג'אווה רצה מהר יותר מהדף, וזמן ההמתנה ברירת המחדל הוא 0. כשהאלמנט עדיין לא מופיע, הטסט נופל. Explicit wait ממתין לתנאי על האלמנט, ומבצע את הפעולה ברגע שהתנאי מתקיים.
צעדי העבודה
1. יצירת WebDriverWait: בבייס פייג' מוגדר שדה בשם wait מסוג WebDriverWait, שמקבל את הדרייבר ומשך של 5 שניות.
2. תנאי ההמתנה: לפני הקליק קוראים ל-wait.until עם ExpectedConditions.elementToBeClickable על הזיהוי של האלמנט.
3. יתרון: אם האלמנט מוכן מוקדם יותר, ההמתנה מסתיימת מיד ולא מחכה 5 שניות שלמות.
4. שימוש חוזר: מתודת הקליק בבייס פייג' מבצעת את ההמתנה, ולכן אין צורך לכתוב אותה בכל דף.
הערות
הבדיקה בשיעור נעשתה בדיבאג, והטסט עבר כרגיל: האלמנט נמצא, הקליק בוצע, והמתודה הוחזרה כפי שצריך.
בשיטה הזאת כל קליק מבוצע רק אחרי שהאלמנט מוכן, והסיכון לנפילה בגלל טעינה איטית קטן.
השיעור הבא בקורס: Data Driven Test - חלק 1

פרקי ההרצאה: Page Object Design עם Explicit Wait

  1. 00:00

    מבוא: סיכום מבנה הפרויקט

  2. 01:13

    מתודת חיפוש בדף הבית

  3. 02:31

    הבייס פייג' ומתודות העזר המשותפות

  4. 03:11

    ירושה מ-Base Page עם extends

  5. 04:13

    יתרון השימוש במתודות מדף מרכזי

  6. 05:31

    המתנה מפורשת (Explicit Wait) לאלמנט

  7. 06:29

    הוספת Explicit Wait לבייס פייג'

תמלול ההרצאה: Page Object Design עם Explicit Wait

הטקסט המלא של הדקות הראשונות בהרצאה «Page Object Design עם Explicit Wait» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

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

  2. 00:27

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

  3. 00:46

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

  4. 01:13

    שהטסט מורכב משורות הסרט ובעצם בתוך הסרט יש לנו את אותו אלמנט של הפייג' שיצרנו לדוגמה כאן זה HP קיצור של הום פייג' ובתוך ההום פייג' יש לנו את המתודה search local type אז חוץ מהתהליך הזה כשעשינו כתיבת מתודות בתוך ה-page object design אז אנחנו רואים שאני אגיע לתוך ה-home page הדף עצמו שמייצג את הדף של ה-home של

  5. 01:53

    האתר שאותו אנחנו בודקים time and date.com אז חוץ מהדף עצמו של ה-home page אז ראינו שאנחנו יוצרים את המתודה בתוכו ובעצם מפעילים ועושים פעולה שמחזירה בדרך כלל ערך בוליאני true ו-false, אז אני יכול להפעיל אותה דרך הקלאס של הטסטים בעזרת שורת הסרטים שמרכיבה את הטסטים עצמם, ולפני הזה יש לנו את הנוטציות של before method ו-before class

  6. 02:31

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

  7. 03:00

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

  8. 03:39

    פייג', לדוגמה פילט טקסט, יכלתי להשתמש בהם בתוך המתודות של הפייג' עצמו, וככה בעצם לייעל את הקוד שלי ולעשות אותו יותר פשוט וקל לקריאה.

  9. 03:56

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

  10. 04:27

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

  11. 04:53

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

  12. 05:24

    הייתי רוצה להראות דוגמה נוספת ליעילות של השימוש הזה, של האיכות הזאת של להשתמש בדף מרכזי אחד שמשרת את כל הדפים האחרים, ברצון שלי להשתמש במה שנקרא סינכרוניזיישן או המתנה לאלמנט שייווצר הרבה פעמים הטסטים שלנו לא יהיו מספיק יציבים בגלל שהג'אווה רצה מהר יותר ממה שהדף ניתן וכשלא מוצאים אלמנט ה-wait time הדפולטי הוא 0 אבל אנחנו יכולים בעצם להגדיר explicit wait זאת אומרת איזשהו

  13. 06:06

    וייט שיהיה מאוד יעיל מבחינת מהבחינה הזאת שהוא ימתין לאלמנט שהוא יהיה ויזיבול ורק אז בעצם יאפשר את הלחיצה אני חוזר על ההסבר אני רוצה בעצם לבצע איזושהי הגדרה של explicit weight שלמדנו בשלבים המוקדמים אבל אני לא רוצה לעשות את זה הרבה פעמים בכל דף ודף ולכן אני יכול להשתמש בבייס פייג' ואני אראה עכשיו דוגמא איך אני משתמש בו על מנת להשתמש ב-Weight הזה כל פעם ופעם שאני הולך

  14. 06:39

    לבצע פעולה על Web-Element וככה בעצם להקטין את הסיכון שתהיה לחיצה כשה-Element לא קיים. אז בואו נראה איך אני עושה את זה ואנחנו נעשה חזרה בעצם על הנושא של ה-Explicit-Weight.

  15. 06:55

    ה-Explicit-Weight, אני מזכיר, זה היכולת שלנו להשתמש ב-Selenium על מנת לתת איזשהו זמן דינמי ל-Web-Element להיטען בדף שאותו אנחנו רוצים לבצע עליו פעולה. לדוגמה, אם אני נמצא בתוך הדף הזה ואני לוחץ על Home,

לקורס המלא: קורס סלניום מתקדם אונליין

ההרצאה הקודמת: Page Object Design עם Base Page

ההרצאה הבאה: Data Driven Test - חלק 1

הרצאות קשורות מקורסים אחרים

  • Explicit Casting
  • סיכום פרויקט אוטומציה במובייל - Maven, Page Object
  • Master Page
  • Wait For Web Element - חלק 1

קורסים נוספים במסלול

  • קורס מבוא ל-QA - מידע חשוב לבודק תוכנה
  • קורס פוסטמן - Postman - בדיקות לאתרי אינטרנט - API
  • קורס Robot Framework - בדיקות QA ממשק גרפי
  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס סלניום בסיסי - בדיקות אוטומטיות - Selenium
  • קורס מייבן - Maven