
new, ומעבירים לו את הדרייבר ואת זמן ההמתנה המקסימלי, למשל 10 שניות.wait.until(...) מציינים מה מחכים לו. בדוגמה נבחר ExpectedConditions.visibilityOfElementLocated, כלומר האלמנט נמצא בדף וגם נראה.By.linkText("My Account").click(). אם הוא לא הופיע עד הזמן המקסימלי, נזרקת שגיאה.הטקסט המלא של הדקות הראשונות בהרצאה «Wait For Web Element - חלק 3» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם זהו השיעור השלישי בנושא המתנה סינכרוניזציה וטסטים אוטומטיים בשיעורים הקודמים הכרנו שני סוגי המתנה בסיסיים את הטרד נקודה סליפ בסוגריים כמה שניות נרצה להמתין כמה מילי סקנדס ואת האוטליסט ווייט הגדרות הווב דרייבר שלנו שאנחנו יכולים להחליט שאם הוא נכשל בזיהוי
הראשוני הוא ממתין איקס שניות וננסה שוב, ורק בפעם השנייה אם הוא לא מוצא את ה-Web-Element שלו אז הוא מעיף אקספצ'יין-אלמנט-ווט-פארם. האפשרות השלישית שלנו להכניס סינכרוניזציה לטסטים שלנו היא האפשרות היותר מורכבת, דורשת יותר קוד, אבל היא מאפשרת לנו ערך נוסף גדול, שזה המתנה ספציפית למצב
מסוים של Web-Element, ובנוסף אפשר להפעיל אותו בנפרד על כל Web-Element, שאנחנו מחליטים ולא על כל המערכת או לא סליפ קשיח האימפליסיט ווייט נותן לנו כמה יתרונות אחד הוא בעצם דוגם כל חצי שנייה את המצב של הווייט אלמנט שלנו ואם הוא מופיע אז הוא בעצם ממשיך בשחית אם הוא לא מופיע הוא ממשיך לדגום
כל חצי שנייה אם הוא מגיע למקסימום שאנחנו מקציבים לו אז הוא בעצם מוציא אקספשן אלמנט נוט פאונד האימפליסיט ווייט היא הדרך הכי מתוחכמת והכי יעילה למצוא ולצייד את הטסט שלנו בסינכרוניזציה.
בואו נראה איך אנחנו נעשה את זה. נחזור ל-ID שלנו, ואנחנו רואים את ה-ID שלנו, יש לנו את ה-Public Static Void Main בקלאס, יש נושא פרופרטי, הגדרות הדרייבר שלנו, ויש לנו את היצירת דרייבר, הופעה, Manage Windows Maximize ו-Manage Timeout Implicit Wait, אמרנו 5 שניות,
time unit second חמש שניות ואם הוא לא מוצא הוא מנסה עוד פעם אחרי חמש שניות ה-web driver שלי ורק אז יוצא ב-exception כאן אני עושה את ה-get time and date קוב ודה ופה אני מנסה ללחוץ כרגע מה שאני רוצה לעשות זה implicit wait for specific web element לדוגמה אותו ווב אלמנט שאנחנו
מתייחסים אליו פה שזה הלוקייטור שלו אוקיי נבצע קליפ אז איך נבצע בעצם את ההמתנה הספציפית הזאת אנחנו צריכים לבצע קודם כל איזשהו תהליך מקדים והוא יצירת משתנה מופע של ווב דרייבר וייט נקרא לו וייט דרייבר וניצור את האינסטנס במילת המפתח new דרייבר, כותב שיפט ספייס ואנחנו מקבלים את
המשתנה, את האפשרות להשלמה אוטומטית של האקליפס. כשאנחנו מתחילים את המופע של ה-WebDriverWeight אנחנו צריכים להגדיר את הדרייבר המקורי שלנו, את ה-WebDriver הרגיל שלנו ואת הזמן שאנחנו רוצים לצייד אותו בסינכרוניזציה.
דוגמא לצורך העניין נגדיר פה 10 שניות אוקיי כשאנחנו נתקלים באלמנט איטי ביותר המקסימום יהיה 10 שניות אנחנו יכולים לתת גם 5 או לשחק עם זה אבל בעיקרון אחרי 10 שניות נרצה לעדכן שהאתר איטי במיוחד אז גם אם זה מצליח אחרי 10 שניות נרצה לעצור את הטסט ולעדכן לדווח על התקלה הזאת אבל נגיד שאנחנו רוצים לתת איזשהו גרייס איזושהי סבלנות
למערכת לחכות 10 שניות לפני שהיא מעיפה את ה-Exception Element בוטפן. אז במקרה הזה אנחנו כאמור יוצרים את ה-Weight Driver, אינסטנט של WebDriver-Weight, הולכים לתוכו את המשתנה ה-Driver שלנו, את אותו אינסטנט דרייבר ששתלנו, שיצרנו קודם על ידי ה-WebDriver מי הוא כל דרייבר,
ולאחר מכן אנחנו יכולים כבר להתחיל בתהליך שלנו של ה-Explicit Weight, ה-Weight הספציפי. אם כן, אני ארצה עכשיו להשתמש באלמנט הזה שיצרתי, את אותו השתנה שיצרתי, שהוא מופע של WebDriver-Waite.
איך אני אבצע את זה? הפעולה שאני אבצע עכשיו היא בעצם תחזיר לי את האלמנט, את ה-Web-אלמנט, אחרי שהיא תמתין שהוא יהיה זמין באותו DOM שאני בודק, באותו אתר.
זאת אומרת, אם אני באתר הזה ואני רוצה לבצע לחיצה על הכפתור My Account, היא תמתין. הפעולה הזאת תכריח את האובייקט להיות זמין לפני שהיא מבצעת את הלחיצה.
היא תצפה שהאובייקט יהיה ויזיבל לפני שהיא מבצעת את הלחיצה. איך אנחנו עושים את זה? אנחנו נשתמש ב... קודם כל, אני רוצה ליצור Web-אלמנט, נקרא לו MyCount, זה אותו אלמנט שאנחנו מחפשים כדי לרחוץ בדוגמה, ואנחנו עכשיו עושים את התהליך הבא על מנת להיות בטוחים שהאלמנט מזוהה והוא ויזיבל בדום