PracticU

Use Static Method

בלי כתוביותעם כתוביות
PracticU › קורס סלניום בסיסי - בדיקות אוטומטיות - Selenium › Use Static Method
מילון מושגים:
מתודה - פונקציה המוגדרת בתוך מחלקה ומתארת פעולה שאובייקטים מאותה מחלקה יכולים לבצע.
חריגה - מצב שגיאה שמתרחש בזמן ריצת התוכנית ומפסיק את המהלך הרגיל, אלא אם הקוד תופס ומטפל בו.
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
בוליאני - סוג נתונים שיכול לקבל אחד משני ערכים בלבד: אמת (true) או שקר (false).
כפתור - רכיב בממשק המשתמש שהמשתמש לוחץ עליו כדי להפעיל פעולה, כמו שליחת טופס או מעבר לדף אחר.
דיבאג - תהליך של איתור, הבנה ותיקון תקלות בקוד, לעיתים בעזרת כלי שמאפשר לעצור ולעקוב אחר ריצת התוכנית.

Use Static Method
מתודה סטטית לשימוש חוזר בודקת אם אלמנט קיים בדף. המטרה היא לקבל תשובה מסודרת כשהאלמנט חסר, במקום exception שמפיל את הטסט.
הבעיה עם isDisplayed
בדיקה של isDisplayed על אלמנט שלא קיים זורקת exception. עטיפה של כל בדיקה ב-try ו-catch לא נוחה, ולכן כדאי דרך נקייה יותר.
איך בונים את המתודה
1. מחלקת עזר: יוצרים מחלקה בשם utility ובה מתודה ציבורית וסטטית מסוג בוליאני בשם isWebElementExists. המתודה מקבלת את הזיהוי (By) ואת הדרייבר.
2. ספירת האלמנטים: המתודה מבצעת driver.findElements לפי הזיהוי ושומרת את התוצאה ברשימה.
3. החזרת תשובה: אם list.size() > 0, המתודה מחזירה true. אחרת היא מחזירה false.
4. שימוש בטסט: מייבאים את המחלקה וקוראים לה לפי שם המחלקה, עם הזיהוי של האלמנט.
5. כפתור Show: הכפתור מזוהה לפי התכונה value, והזיהוי מועבר לאותה מתודה.
שימו לב
כשהזיהוי שגוי, הטסט נכשל בהודעת assertion ברורה ולא ב-exception של אלמנט שלא נמצא. בדיבאג רואים את גודל הרשימה: כשהאלמנט קיים הרשימה מכילה פריט אחד.
בשיטה הזאת בודקים כל אלמנט בשורה אחת, וכך אפשר לבדוק טבלאות, כפתורים ושדות באותה דרך.

פרקי ההרצאה: Use Static Method

  1. 00:00

    מבוא למתודות סטטיות בטסטים

  2. 00:36

    מתודת עזר סטטית לשימוש חוזר

  3. 02:08

    בדיקת קיום טבלה בדף

  4. 04:02

    שימוש ב-isDisplayed ובעיות שעולות

  5. 07:03

    יצירת מתודה חיצונית לבדיקת קיום אלמנט

  6. 08:28

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

תמלול ההרצאה: Use Static Method

הטקסט המלא של הדקות הראשונות בהרצאה «Use Static Method» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

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

  2. 00:24

    אז בואו נראה למה אני מתכוון כשאני אומר לעבוד עם המתודות הסטטיות ב-TestNG. אז ראינו שאנחנו יכולים לשלב את ה-TestNG ואת המבנה שלו, את האנוטציות שלו, את ה-Before Class, את ה-Before Method, את הטסטים במערכת של הסלניום,

  3. 00:43

    את ההכרזה על ה-WebDriver והעבודה איתה, ועכשיו מה שאנחנו רוצים לעשות בעצם זה להשאיר עוד יותר את הטסט שלנו ולשלב איתו מתודה סטטית שתהיה עזר מבחינתנו, Utility של הטסטים שלנו ונוכל להשתמש בה שוב ושוב.

  4. 01:04

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

  5. 01:13

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

  6. 01:40

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

  7. 02:08

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

  8. 02:24

    אז אני אראה דוגמא אחת של מתודה שבעצם התפקיד שלה זה להחזיר true או false לפי האם האובייקט אותו web-element קיים בדף או לא איך אני אעשה את זה ואיך אני אשתמש בזה שוב ושוב, הטסטים שלי, אני מייד אראה את זה ואדגים.

  9. 02:43

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

  10. 03:16

    ויש לנו פה את ה-before method שזה ה-get url שכל פעם היא לפני כל טסט וטסט היא תבצע פתחול של ה-url ותעשה get לטיימנדט נקודה קום ופה יש לנו את הטסט עצמו מן הכרזה של סיסטם ארקט פרינטלן טסט את השם של הטסט לשנה את זה לטסט אחד ופה יש לנו לחיצה על הקלנדר אותו או לחיצה על הכפתור שראינו זאת אומרת אנחנו מהמקום הזה מבצעים את הבדיקה הזאתי אנחנו

  11. 03:47

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

  12. 04:21

    הבאה דרייבר נקודה פייל אלמנט ביי איי-די ואני יכול לציין פה את השם של האיי-די את אותו איי-די שאני רוצה אבל הבעיה בצורה הזאת היא שכל כישלון בעצם אני אצטרך לעטוף אותו בדרייבר קאץ' אם זה לא יהיה קיים זה יוציא הודעת שגיאה אז בואו נראה is this play זה יחזיר לי true במקרה שהוא קיים אני מכניס אותו לתוך פעולת הסרט את הווידוי שאני עושה וכאן אני סוגר את זה אוקיי אז כל עוד זה ככה זה צריך

  13. 05:16

    להיות בסדר בואו נעשה comment על הסרט הראשון נריץ את זה ונראה שזה מזהה את הטבלה שלי ואכן עובר ואני אגיד אז למה אני לא כל כך אוהב את הפתרון הזה של שימוש במתודה isdisplayed.

  14. 05:38

    בואו נראה את הטסט, נראה שהכל היה בסדר אבל בוא נגיד שבמקרה הטבלה לא תהיה או שהיא תקבל איי-די אחר. נגיד אני משנה את האיי-די, מה יקרה אז?

  15. 05:57

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

  16. 06:32

    אנחנו עדיין בטיים אאוט שהוא מחכה אנחנו מחכים לטיים אאוט שהוא מחכה לווב אלמנט הוא לא מוצא את הווב אלמנט ב-ID שנתתי ולכן הוא עדיין מחכה ותכף הוא יעוף וייתן לנו את האקספצ'ן שהוא לא מצא אותו, כן, הוא נפל ואנחנו רואים באמת שיש אקספצ'ן של אלמנט not found, unable to locate

  17. 07:03

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

  18. 07:13

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

  19. 08:00

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

  20. 08:30

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

  21. 09:14

    פייל אלמנטס ואני אשתמש פה בזיהוי שלי ב-by זאת אומרת אם אני מוצא את אותו web אלמנט אז אני אוכל להחזיר true ואיך אני מוודא שבאמת מצאתי את ה-web אלמנט בלי לעוף אני אומר ככה

לקורס המלא: קורס סלניום Selenium בסיסי

ההרצאה הקודמת: getParameter from TestNG

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

  • Static Class
  • Page Object Design עם Method By
  • Google API - Static Map
  • מחלקה מסוג Static Class

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

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