
wait מסוג WebDriverWait, שמקבל את הדרייבר ומשך של 5 שניות.wait.until עם ExpectedConditions.elementToBeClickable על הזיהוי של האלמנט.הטקסט המלא של הדקות הראשונות בהרצאה «Page Object Design עם Explicit Wait» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם בשיעור הקרוב נחזור שוב על הבסיס של הפריימרוק האוטומציה שלנו פרויקט האוטומציה שלנו שזה הפייג' אובייקט דיזיין נראה מה עשינו עד עכשיו ונראה איך אנחנו יכולים לשפר עוד יותר את המבנה של הפרויקט שלנו אמרנו שהפייג' אובייקט דיזיין זו הדרך והסטנדרט הנכון לכתוב
אוטומציה זה התקן הנכון לכתיבת אוטומציה והיא מקלה עלינו מאוד על היכולת לתחזק, לכתוב טסטים לוגיים ולהרחיב את הטסטים שלנו בצורה יעילה, מהירה ולנצל את האיכויות של ה-object-oriented.
אז בשיעור הקודם, אני אעשה תזכורת קצרה, ראינו איך אנחנו יוצרים בעצם את המבנה של הפרויקט שלנו, אנחנו יוצרים את הקובץ טסט עצמו שהוא מורכב מ-TestNG, אם אני עומד על הנוטציות האלה אני רואה שזה שייך ל-OrcTest, הנוטיישנס וכל הנוטציה כזאת היא בעצם מייצרת טסט
שהטסט מורכב משורות הסרט ובעצם בתוך הסרט יש לנו את אותו אלמנט של הפייג' שיצרנו לדוגמה כאן זה HP קיצור של הום פייג' ובתוך ההום פייג' יש לנו את המתודה search local type אז חוץ מהתהליך הזה כשעשינו כתיבת מתודות בתוך ה-page object design אז אנחנו רואים שאני אגיע לתוך ה-home page הדף עצמו שמייצג את הדף של ה-home של
האתר שאותו אנחנו בודקים time and date.com אז חוץ מהדף עצמו של ה-home page אז ראינו שאנחנו יוצרים את המתודה בתוכו ובעצם מפעילים ועושים פעולה שמחזירה בדרך כלל ערך בוליאני true ו-false, אז אני יכול להפעיל אותה דרך הקלאס של הטסטים בעזרת שורת הסרטים שמרכיבה את הטסטים עצמם, ולפני הזה יש לנו את הנוטציות של before method ו-before class
כדי להתחיל את הדרייבר ולהתחיל את הדפים שאנחנו הולכים להשתמש בהם. לכן אנחנו נראה דוגמה נוספת חלק נוסף שראינו בשיעור הקודם זה יצירת בייס פייג' הבייס פייג' הבייס פייג' בעצם הוא הדף שבעצם מרכז בשבילנו את כל המתודות הכלליות שקשורות לדפים של המערכת שאותה אנחנו בודקים יש לנו את הקונסטרקטור
ויש לנו את המתודות אנחנו יצרנו את המתודות את המתודות קליק ואת המתודות פיל טקסט ובעזרתם בעצם אנחנו יכולים לכתוב את הקוד שלהם בצורה מאוד יעילה אם אני שוב מסתכל על הום פייג' קישרתי את הדף הום פייג' בעזרת אקסטנט לבייס פייג' שלחתי את הדרייבר שמרכיב את ההום פייג' דרך המילה שמו הסופר בקונסטרקטור ואז יכלתי להשתמש בעצם במתודות שכתבתי בבייס
פייג', לדוגמה פילט טקסט, יכלתי להשתמש בהם בתוך המתודות של הפייג' עצמו, וככה בעצם לייעל את הקוד שלי ולעשות אותו יותר פשוט וקל לקריאה.
עדיין לא חובה להשתמש במתודות, אפשר עדיין לעשות בעצם ממש את הפעולות עצמן, דרייבר נקודה פיינד אלמנט ביי איי-די ולעשות סם קיז אבל הצורה הזאת היא מאוד יעילה אז למה בעצם אנחנו באמת מתאמצים כל כך כדי לכתוב מתודות כלליות כמו פיל טקסט קליק ועוד מתודות אחרות שאנחנו יכולים לראות בעצם כאן מגיע החלק של
היתרון של שימוש בפייג' שהוא בייס פייג' ולא לכתוב את המתודות כל פעם מחדש. זאת אומרת, ברגע שאנחנו יוצרים מתודה בבייס פייג' ומשתמשים בה שוב ושוב בכל דף ודף, לדוגמה בדף של הרג'סטריישן, גם פה אני משתמש במתודה פילט טקסט ומבצע רישום לכל שדה ושדה בעזרת הפילט טקסט,
בעצם אני חוסך קוד ואני עושה את הקוד שלי מאוד יעיל ומאוד תמציתי, וגם בהום פייג' אני משתמש במתודה פילט טקסט, בקליק על מנת לבצע את הפעולות על ה-WebElement באותו דף שאני רוצה, ובעצם אני מרכז את הכל במתודה אחת, שבעזרת ה-Extend אני יכול לגשת ולהשתמש בה מכל דף ודף שנמצא במערכת שלי.
הייתי רוצה להראות דוגמה נוספת ליעילות של השימוש הזה, של האיכות הזאת של להשתמש בדף מרכזי אחד שמשרת את כל הדפים האחרים, ברצון שלי להשתמש במה שנקרא סינכרוניזיישן או המתנה לאלמנט שייווצר הרבה פעמים הטסטים שלנו לא יהיו מספיק יציבים בגלל שהג'אווה רצה מהר יותר ממה שהדף ניתן וכשלא מוצאים אלמנט ה-wait time הדפולטי הוא 0 אבל אנחנו יכולים בעצם להגדיר explicit wait זאת אומרת איזשהו
וייט שיהיה מאוד יעיל מבחינת מהבחינה הזאת שהוא ימתין לאלמנט שהוא יהיה ויזיבול ורק אז בעצם יאפשר את הלחיצה אני חוזר על ההסבר אני רוצה בעצם לבצע איזושהי הגדרה של explicit weight שלמדנו בשלבים המוקדמים אבל אני לא רוצה לעשות את זה הרבה פעמים בכל דף ודף ולכן אני יכול להשתמש בבייס פייג' ואני אראה עכשיו דוגמא איך אני משתמש בו על מנת להשתמש ב-Weight הזה כל פעם ופעם שאני הולך
לבצע פעולה על Web-Element וככה בעצם להקטין את הסיכון שתהיה לחיצה כשה-Element לא קיים. אז בואו נראה איך אני עושה את זה ואנחנו נעשה חזרה בעצם על הנושא של ה-Explicit-Weight.
ה-Explicit-Weight, אני מזכיר, זה היכולת שלנו להשתמש ב-Selenium על מנת לתת איזשהו זמן דינמי ל-Web-Element להיטען בדף שאותו אנחנו רוצים לבצע עליו פעולה. לדוגמה, אם אני נמצא בתוך הדף הזה ואני לוחץ על Home,