PracticU

Wait For Web Element - חלק 1

בלי כתוביותעם כתוביות
PracticU › קורס סלניום בסיסי - בדיקות אוטומטיות - Selenium › Wait For Web Element - חלק 1
מילון מושגים:
חריגה - מצב שגיאה שמתרחש בזמן ריצת התוכנית ומפסיק את המהלך הרגיל, אלא אם הקוד תופס ומטפל בו.
דיבאג - תהליך של איתור, הבנה ותיקון תקלות בקוד, לעיתים בעזרת כלי שמאפשר לעצור ולעקוב אחר ריצת התוכנית.

Wait For Web Element - חלק 1
השיעור פותח את נושא הסינכרוניזציה (Wait) בסלניום: איך גורמים לטסט לחכות לאלמנטים שעדיין נטענים, כדי שלא ייפול בגלל טעינה איטית.
השלבים העיקריים
1. הבעיה: דף נטען אלמנט אחרי אלמנט. אם הטסט מנסה ללחוץ על אלמנט לפני שהוא הופיע, נזרקת השגיאה element not found, גם אם הדף מגיע אליו תוך שנייה.
2. Thread.sleep: הדרך הפשוטה ביותר היא לעצור את הטסט לזמן קבוע במילישניות. הפקודה דורשת טיפול בחריגה InterruptedException.
3. הדגמה: לפני לחיצה על הלינק My Account מוגדרת השהיה של שלוש שניות, ובדיבאג רואים שהלחיצה מתבצעת רק אחריה.
4. חסרון ה-sleep: הוא תמיד מחכה את כל הזמן, גם כשהאלמנט כבר נטען, ולכן מאט את הטסט.
5. שתי דרכים נוספות: בשיעורים הבאים נלמדו implicit wait, שמוגדר על כל הדרייבר, ו-explicit wait, שמוגדר לאלמנט מסוים.
שימו לב
ההשהיה הקבועה לא מתחשבת במה שקורה בדף. לכן היא מתאימה לדמו, אבל לא לטסטים שרצים הרבה פעמים.
תרגלו את ה-sleep בדוגמה משלכם, ונסו להבין מה קורה אם מסירים אותו.
השיעור הבא בקורס: Wait For Web Element - חלק 2

פרקי ההרצאה: Wait For Web Element - חלק 1

  1. 00:00

    הקדמה: סינכרוניזציה וטסטים יציבים

  2. 00:37

    מה זה סינכרוניזציה של טסט

  3. 02:15

    שלוש דרכי ההמתנה לאלמנטים

  4. 02:54

    המתנה קבועה עם sleep ויתרונותיה

  5. 03:38

    הגדרת implicit wait כברירת מחדל

  6. 04:54

    המתנה ספציפית לאלמנט עם explicit wait

  7. 05:35

    הדגמת sleep בטסט קצר

תמלול ההרצאה: Wait For Web Element - חלק 1

הטקסט המלא של הדקות הראשונות בהרצאה «Wait For Web Element - חלק 1» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    שלום לכולם, בשיעור הקרוב נדבר על נושא שחשוב כדי לייצר טסטים יציבים. בשיעור הקרוב נדבר על נושא הסינכרוניזיישן. תכף נדבר עליו ונסביר בדיוק על מה אנחנו מדברים כשאנחנו אומרים Synchronized Test, Synchronized Element או Wait for Elements.

  2. 00:27

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

  3. 00:44

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

  4. 01:09

    אבל יש פעמים שבהם הטסט שלנו מקדים את קצב הטעינה של הדף. במקרים שיש טעינה של דף מרובה אלמנטים, תוצאות חיפוש רבות או בעיות תקשורת, בעיות עיתיות של הדפדפן או סיבות אחרות, ה-Web-Element שלנו יטענו לאט לאט לתוך הדף ואילו הטסט יהיה מהיר יותר וינסה לגשת אל ה-Web-Element שטרם ניתנו לפני שהם ניתנו לדף,

  5. 01:45

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

  6. 02:09

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

  7. 02:26

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

  8. 02:47

    יש לנו שלושה דרכים, שלוש דרכים כדי לבצע סינכרוניזציה, כדי להשתמש בו-wait בסלניום. הדרך הראשונה היא הגדרת sleep, הגדרת קוד שבו אנחנו אומרים לסקריפט שלנו, לטסט שלנו, פשוט לחכות x מילי סקנד.

  9. 03:13

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

  10. 03:44

    בדף שניתן אפשרות שנייה היא להגדיר implicit wait הגדרת ה implicit wait היא הגדרה כללית על ה-WebDriver שלנו שאנחנו יכולים לשנות את הגדרות ה-WebDriver.

  11. 04:00

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

  12. 04:21

    אנחנו נדגים את זה בדיוק, רק נבהיר שה-Implicit Weight הוא האמצעי שלנו לקבוע הגדרה הגלובלית בפרויקט שלנו לזמן המתנה שבו ה-WebDriver יפיל את הטסט במקרה ש-WebElement לא קיים והוא מנסה לגשת אליו.

  13. 04:41

    ההגדרה הדפולטית היא 0 אבל אנחנו יכולים לשנות אותה ואנחנו נראה בדיוק איך אנחנו משנים את ההגדרה הדפולטית בהמשך.

  14. 04:51

    האמצעי השלישי הוא Explicit Weight. ExplicitWeight אומר המתנה ספציפית ל-WebElement ספציפי שאנחנו יודעים שיש סיכוי שהוא יטען באיטיות ואנחנו רוצים להגדיר לו זמן המתנה באופן מיוחד איטי או טולרנטי במיוחד על מנת להמשיך את הטסט שלנו.

  15. 05:13

    אנחנו יכולים להגדיר את explicit weight באופן ספציפי על אלמנטים מסוימים כך שלא נפעיל אותו תמיד אבל באלמנטים שאנחנו רואים שיש איטיות אנחנו יכולים להגדיר זמן המתנה לפי תנאי מסוים וזה נחשב את הדרך הכי מורכבת אמנם אבל הכי יעילה כדי לחכות ל-WebElement בטסט שלנו.

  16. 05:40

    אז בואו נתחיל ונראה איך אנחנו מגדירים Sleep בתוך הטסט שלנו. אני עובר ל-ID שלי, הכנתי טסט קצר, קראתי ל-Class "wait Sleep 2", מה שעשיתי פה זה את מה שעשינו בשיעורים הקודמים, הגדרתי משתנה מערכת, כדי לפנות ל-Chrome WebDriver הגדרתי את השם של הקובץ,

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

ההרצאה הקודמת: Web Elements - חלק 2

ההרצאה הבאה: Wait For Web Element - חלק 2

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

  • מה זה Web Service
  • TS Web Access
  • הסבר על מה זה Web API
  • Classic Web Service

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

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