
הטקסט המלא של הדקות הראשונות בהרצאה «Wait For Web Element - חלק 1» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם, בשיעור הקרוב נדבר על נושא שחשוב כדי לייצר טסטים יציבים. בשיעור הקרוב נדבר על נושא הסינכרוניזיישן. תכף נדבר עליו ונסביר בדיוק על מה אנחנו מדברים כשאנחנו אומרים Synchronized Test, Synchronized Element או Wait for Elements.
אז בשיעור הקרוב נראה איך אנחנו בעצם דואגים שהטסט שלנו יהיה מסוגל לחכות לאלמנטים שניתנים בדף שאנחנו רוצים לבדוק בצורה מסודרת בצורה כזאת שלא תפיל את הטסט שלנו.
מה זה בעצם סינכרוניזיישן או ווייט? כשאנחנו טוענים דף אינטרנט כלשהו הדף נטען והאלמנטים בתוכו ה-Web אלמנט בתוכו נטענים זה אחר זה. בדרך כלל זמן הטעינה הוא מהיר מאוד ואנחנו רואים את האתר עולה במהירות.
אבל יש פעמים שבהם הטסט שלנו מקדים את קצב הטעינה של הדף. במקרים שיש טעינה של דף מרובה אלמנטים, תוצאות חיפוש רבות או בעיות תקשורת, בעיות עיתיות של הדפדפן או סיבות אחרות, ה-Web-Element שלנו יטענו לאט לאט לתוך הדף ואילו הטסט יהיה מהיר יותר וינסה לגשת אל ה-Web-Element שטרם ניתנו לפני שהם ניתנו לדף,
דבר שעלול להוביל לתקלה. בעצם אם אנחנו לא נמתין לאלמנט וננסה ללחוץ עליו או להזין לתוכו טקסט או לבצע כל פעולה אחרת בטסט שלנו, מה שיקרה זה שהטסט שלנו ייפול ויוציא הודעת שגיאה, יוציא אקספצ'ן.
למעשה כשנשחזר את הפעולה נראה שאין שום תקלה והאלמנט פשוט ניתן באיטיות או אפילו לא נבחין בזה. לכן לא נרצה להכשיל את הטסט שלנו, לא נרצה שהטסט שלנו ייפול במקרה של תאנה איטית אבל סבירה של אלמנטים.
כן נרצה שהטסט יעצור או שידווח על תקלה במקרה שתאנה מאוד איטית אבל בכל מקרה הסינכרוניזציה או ה-wait מאפשרת לנו להחליט באיזה מקרה באיזה מקרה של איטיות אנחנו רוצים להכשיל את הטסט שלנו.
יש לנו שלושה דרכים, שלוש דרכים כדי לבצע סינכרוניזציה, כדי להשתמש בו-wait בסלניום. הדרך הראשונה היא הגדרת sleep, הגדרת קוד שבו אנחנו אומרים לסקריפט שלנו, לטסט שלנו, פשוט לחכות x מילי סקנד.
sleep הוא בעצם הוראה בסיסית לתהליך שלנו, לטסט שלנו להמתין. לו יתרונות וחסרונות היתרון שלו שהוא מהיר הוא פשוט הוא לא דורש הבנה ולא דורש קונפיגורציה החסרונות שלו שהוא עלול לגרום לנו לחכות זמן שאנחנו לא חייבים לחכות בגלל החיסרון שלו נרצה להכיר עוד שני דרכים נוספות לבצע wait או סינכרוניזציה
בדף שניתן אפשרות שנייה היא להגדיר implicit wait הגדרת ה implicit wait היא הגדרה כללית על ה-WebDriver שלנו שאנחנו יכולים לשנות את הגדרות ה-WebDriver.
ה-Driver שלנו באופן דיפולטי ממתין 0 שניות, 0 זמן לאלמנט כדי שיגיע, ואילו אנחנו נרצה לפעמים יותר מכך, שהוא יחכה כמה שניות ורק אז ינסה לגשת, במקרה שיש לו טעינה איטית.
אנחנו נדגים את זה בדיוק, רק נבהיר שה-Implicit Weight הוא האמצעי שלנו לקבוע הגדרה הגלובלית בפרויקט שלנו לזמן המתנה שבו ה-WebDriver יפיל את הטסט במקרה ש-WebElement לא קיים והוא מנסה לגשת אליו.
ההגדרה הדפולטית היא 0 אבל אנחנו יכולים לשנות אותה ואנחנו נראה בדיוק איך אנחנו משנים את ההגדרה הדפולטית בהמשך.
האמצעי השלישי הוא Explicit Weight. ExplicitWeight אומר המתנה ספציפית ל-WebElement ספציפי שאנחנו יודעים שיש סיכוי שהוא יטען באיטיות ואנחנו רוצים להגדיר לו זמן המתנה באופן מיוחד איטי או טולרנטי במיוחד על מנת להמשיך את הטסט שלנו.
אנחנו יכולים להגדיר את explicit weight באופן ספציפי על אלמנטים מסוימים כך שלא נפעיל אותו תמיד אבל באלמנטים שאנחנו רואים שיש איטיות אנחנו יכולים להגדיר זמן המתנה לפי תנאי מסוים וזה נחשב את הדרך הכי מורכבת אמנם אבל הכי יעילה כדי לחכות ל-WebElement בטסט שלנו.
אז בואו נתחיל ונראה איך אנחנו מגדירים Sleep בתוך הטסט שלנו. אני עובר ל-ID שלי, הכנתי טסט קצר, קראתי ל-Class "wait Sleep 2", מה שעשיתי פה זה את מה שעשינו בשיעורים הקודמים, הגדרתי משתנה מערכת, כדי לפנות ל-Chrome WebDriver הגדרתי את השם של הקובץ,