
isDisplayed על אלמנט שלא קיים זורקת exception. עטיפה של כל בדיקה ב-try ו-catch לא נוחה, ולכן כדאי דרך נקייה יותר.utility ובה מתודה ציבורית וסטטית מסוג בוליאני בשם isWebElementExists. המתודה מקבלת את הזיהוי (By) ואת הדרייבר.driver.findElements לפי הזיהוי ושומרת את התוצאה ברשימה.list.size() > 0, המתודה מחזירה true. אחרת היא מחזירה false.value, והזיהוי מועבר לאותה מתודה.הטקסט המלא של הדקות הראשונות בהרצאה «Use Static Method» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם בשיעור הקרוב נדבר על ה-TestNG והסלניום כמו שדיברנו בשיעורים האחרונים ובעצם נסיים את השלב של הסלניום הבסיסי. רציתי בשלב הזה שכבר אנחנו מסיימים את החלק הבסיסי של סלניום להכיר את היכולת שלנו לעבוד עם המתודות סטטיות בתוך הטסטים שלנו ב-TestNG.
אז בואו נראה למה אני מתכוון כשאני אומר לעבוד עם המתודות הסטטיות ב-TestNG. אז ראינו שאנחנו יכולים לשלב את ה-TestNG ואת המבנה שלו, את האנוטציות שלו, את ה-Before Class, את ה-Before Method, את הטסטים במערכת של הסלניום,
את ההכרזה על ה-WebDriver והעבודה איתה, ועכשיו מה שאנחנו רוצים לעשות בעצם זה להשאיר עוד יותר את הטסט שלנו ולשלב איתו מתודה סטטית שתהיה עזר מבחינתנו, Utility של הטסטים שלנו ונוכל להשתמש בה שוב ושוב.
תכף נראה דוגמה בדיוק ספציפית למה אני מתכוון כשאני מדבר על מתודה סטטית לשימוש חוזר בטסטים שלנו.
אז בואו נלך לסביבת העבודה שלנו ומיד נראה את הטסט שלנו. בטסט הפשוט שעשינו אנחנו לחצנו על הלינק הזה של הקלנדר, נכנסנו לאתר של ה-time and date ואנחנו לחצנו על הקישור של הקלנדר וכאן בדקנו בעצם רק את ה-URL, אם ה-URL נכון, זה אחד הטסטים שיצרנו,
אבל בואו נניח שאנחנו לא רוצים להסתפק רק בבדיקה של URL אלא רוצים לבדוק את התוכן של האלמנטים, לדוגמה את התוכן של הטבלה של התאריכים, לדוגמה יש לנו את הטבלה הזאת שהיא בעצם מכילה בתוכה את הטבלאות שאנחנו רואים אותן פה, אוקיי?
אז בוא נגיד שאנחנו רוצים לדעת כל מיני דברים בתוך הטבלה הזאתי אבל הדבר הראשון שאנחנו רוצים לראות אני מסמן אותה בעזרת האינספקט טול של החרום אני רוצה לוודא שהיא קיימת בדף אז איך אני אעשה את זה בעצם?
אז אני אראה דוגמא אחת של מתודה שבעצם התפקיד שלה זה להחזיר true או false לפי האם האובייקט אותו web-element קיים בדף או לא איך אני אעשה את זה ואיך אני אשתמש בזה שוב ושוב, הטסטים שלי, אני מייד אראה את זה ואדגים.
אבל שוב, אני חוזר על הדוגמה, הרצון שלי זה לוודא שאני באמת רואה את הטבלה הזאת בתוך הדף שאני בודק. אז בואו נלך לטסט שלנו. יש לנו טסט, יצרנו טסט ב-TestNG, והכרזנו על WebDriver כמשתנה כללי שמוכר בכל הטסטים שלנו, יש לנו את ה-before class והכרזנו בתוכו על הדרייבר שאנחנו רוצים לפי משתנה שקיבלנו בחוץ
ויש לנו פה את ה-before method שזה ה-get url שכל פעם היא לפני כל טסט וטסט היא תבצע פתחול של ה-url ותעשה get לטיימנדט נקודה קום ופה יש לנו את הטסט עצמו מן הכרזה של סיסטם ארקט פרינטלן טסט את השם של הטסט לשנה את זה לטסט אחד ופה יש לנו לחיצה על הקלנדר אותו או לחיצה על הכפתור שראינו זאת אומרת אנחנו מהמקום הזה מבצעים את הבדיקה הזאתי אנחנו
רוצים לוודא שהקלנדר קיים ואני רוצה לוודא עכשיו שהטבלה של התאריכים נמצאת אז אוקיי אז אני ממשיך את הטסט שלי היא לחצה על הטסט לחץ על קלנדר על הלינק טקסט הופיע לינק טקסט מחכה שתי שניות ובודק את הקורנט url אני רוצה להוסיף עוד הסרט שמוודא שטבלת הקלנדר קיימת אז לצורך כך אני ארצה לבנות מתודה שבודקת האם האובייקט קיים אז אני יכול לבצע את הפעולה
הבאה דרייבר נקודה פייל אלמנט ביי איי-די ואני יכול לציין פה את השם של האיי-די את אותו איי-די שאני רוצה אבל הבעיה בצורה הזאת היא שכל כישלון בעצם אני אצטרך לעטוף אותו בדרייבר קאץ' אם זה לא יהיה קיים זה יוציא הודעת שגיאה אז בואו נראה is this play זה יחזיר לי true במקרה שהוא קיים אני מכניס אותו לתוך פעולת הסרט את הווידוי שאני עושה וכאן אני סוגר את זה אוקיי אז כל עוד זה ככה זה צריך
להיות בסדר בואו נעשה comment על הסרט הראשון נריץ את זה ונראה שזה מזהה את הטבלה שלי ואכן עובר ואני אגיד אז למה אני לא כל כך אוהב את הפתרון הזה של שימוש במתודה isdisplayed.
בואו נראה את הטסט, נראה שהכל היה בסדר אבל בוא נגיד שבמקרה הטבלה לא תהיה או שהיא תקבל איי-די אחר. נגיד אני משנה את האיי-די, מה יקרה אז?
בעצם מה שיקרה זה שהטסט לא רק שייכשל אלא יהיה גם אקספצ'ן זאת אומרת isdisplayed לא יודע להתמודד עם מצב שהוא לא מזהה את ה-WebElement ומצפה שאנחנו נתפוס את האקספצ'ן את הקריסה הזאת בא ב-try and catch אבל הרבה פעמים אני לא ארצה להשתמש ב-try ו-catch על כל הסרט והסרט בכל בדיקה ובדיקה ולכן הייתי רוצה איזשהו מתודה אחרת שמבצעת את התהליך בצורת קינאס
אנחנו עדיין בטיים אאוט שהוא מחכה אנחנו מחכים לטיים אאוט שהוא מחכה לווב אלמנט הוא לא מוצא את הווב אלמנט ב-ID שנתתי ולכן הוא עדיין מחכה ותכף הוא יעוף וייתן לנו את האקספצ'ן שהוא לא מצא אותו, כן, הוא נפל ואנחנו רואים באמת שיש אקספצ'ן של אלמנט not found, unable to locate
אלמנט, זה לא בדיוק מה שאני רוצה, אני רוצה שתהיה נפילה יותר מסודרת, בדיקה יותר מסודרת ולצורך כך אני אשתמש במתודה חיצונית.
מתודה חיצונית סטטית אנחנו מתחילים לעשות אותה בקלאס נפרד אז אני מקיש בקשימני על הפקאג' new class ואני אקרא לקלאס הזה utility לא צריך את הפאבליק סטטיק ווידמן ויש לנו את הקלאס הזה utility ופה אני אוכל להכריז על הפאבליק סטטיק פוליאן ואני אקרא לזה is web element אקזיסט אוקיי כי לפעמים אני ארצה שפשוט לקבל חיווי של בוליאני האם האלמנט קיים או לא זה
הכל ולצורך הבדיקה אני אצטרך את המזהה של אותו וב אלמנט איך אנחנו קוראים למזהה של אותו אלמנט ביי זה אותו אובייקט שאנחנו צריכים כדי למצוא את הווב אלמנט ולהחזיר חיווי האם הוא נמצא או לא נמצא ועוד דבר שאנחנו צריכים זה וב דרייבר זאת אומרת אנחנו צריכים לקבל כדי להפעיל את המתודה הזאתי
שני אלמנטים שני אובייקטים אחד זה ביי תכף נראה איך אנחנו משתמשים פה ואחד זה ווב דרייבר ואנחנו פה מתחילים את המתודה שלנו בוא נראה אוקיי נעשה ווב דרייבר ייבוא של הווב דרייבר מהסלניום ואנחנו צריכים לעשות עכשיו איזשהו פעולה של ספירת אלמנטים איך אני עושה את זה ויסט של ווב אלמנט תכף אני אסביר מה אני עושה וכרגע זה הליסט שלי שווה דרייבר
פייל אלמנטס ואני אשתמש פה בזיהוי שלי ב-by זאת אומרת אם אני מוצא את אותו web אלמנט אז אני אוכל להחזיר true ואיך אני מוודא שבאמת מצאתי את ה-web אלמנט בלי לעוף אני אומר ככה