PracticU

Wait For Web Element - חלק 2

בלי כתוביותעם כתוביות
PracticU › קורס סלניום בסיסי - בדיקות אוטומטיות - Selenium › Wait For Web Element - חלק 2
Wait For Web Element - חלק 2
השיעור ממשיך את הנושא של סינכרוניזציה, והפעם מוצג implicit wait: הגדרה כללית על הדרייבר שקובעת כמה זמן לחכות לכל אלמנט לפני שנזרקת שגיאה.
השלבים העיקריים
1. מה זה implicit wait: הגדרה שנעשית פעם אחת על ה-WebDriver, ומשפיעה על כל פעולות החיפוש שלו. ברירת המחדל היא 0 שניות.
2. הגדרה: קוראים ל-driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS), כלומר 5 שניות, ביחידת זמן שניות.
3. איך זה עובד: כשהדרייבר לא מוצא אלמנט, הוא מנסה שוב במשך 5 שניות. רק אם האלמנט לא נמצא גם אחרי זה, נזרקת השגיאה element not found.
4. גבול הזמן: מספר גדול מדי עלול לתקוע את הטסט כשאלמנט באמת לא קיים, ולכן בוחרים זמן קצר שמספיק לטעינה רגילה.
5. תרגיל: בדוגמה הוחלף ה-sleep בהגדרת ה-implicit wait, והלחיצה על My Account הצליחה.
שימו לב
ההגדרה חלה על כל הדרייבר, לא על אלמנט מסוים. זה נקרא גם explicit wait, ונלמד בשיעור הבא.
תרגלו לשנות את ערך ההמתנה, ובדקו את ההבדל בין מצב שבו האלמנט קיים ומצב שבו הוא לא קיים.
השיעור הבא בקורס: Wait For Web Element - חלק 3

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

  1. 00:00

    חזרה: מהי סינכרוניזציה והמתנה

  2. 01:35

    הכרת implicit wait כהגדרה כללית

  3. 02:18

    יצירת טסט והגדרת דרייבר Chrome

  4. 03:20

    שינוי הגדרת ברירת המחדל של הדרייבר

  5. 03:54

    בחירת implicit wait ויחידת זמן

  6. 04:54

    הסבר על חיפוש חוזר של אלמנט

  7. 05:35

    מה קורה כשאלמנט לא נמצא בזמן

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

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

  1. 00:02

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

  2. 00:10

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

  3. 00:26

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

  4. 00:45

    אם לא נעשה את זה עלול הטסט שלנו ליפול בגלל שאלמנטים שאנחנו מצפים שיהיו לא יהיו זמינים לפקודות Java שלנו, קליק או הזנת טקסט ויהיה exception של element not found.

  5. 01:02

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

  6. 01:34

    לבצע wait או סינכרוניזציה בטסט שלנו היום נכיר את האימפליסיט wait זה אומר implicit weight אומר לשנות את הגדרות הבסיסיות של ה-WebDriver שלנו, אני חוזר ה-WebDriver לא WebElement, על מנת שהוא יהיה יותר טולרנטי יותר סבלני לאלמנטים שניתנים.

  7. 01:58

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

  8. 02:16

    בואו נראה את הדוגמה ב-ID ואני אסביר בדיוק על מה אנחנו מדברים. אני הולך לאקליפס שלי, יצרנו את הטסט, הטסט הקודם שהכרנו בשיעור הקודם, יצרנו קלאס, קלאס הרצאה, void main, יש לנו את ה-SystemSetProperty, Chrome WebDriver, יש לנו את ה-Chrome Exit, כאן יש לנו את התחול של ה-WebDriver מסוג

  9. 02:41

    ChromeDriver ויש לנו את היכולת ל-ToneDף. אנחנו עושים Manage Window Maximized ו-Get ל-URL הבא, שזה דף הבדיקה שלנו timeanddate.com/weather אבל הכרנו קודם את ה-thread אמרנו שאנחנו יכולים להשפיע על אובייקט ה-thread האובייקט שאחראי על הריצה שלנו מול הבראוזר לחכות שלוש שניות ואנחנו צריכים להכניס interrupt exception למתודה שלנו בזמן שאנחנו משתמשים

  10. 03:13

    ב-threadsleep פעם אחת בצורה כזאתי ואנחנו יכולים לבצע את ההמתנה של שלוש שניות אבל אם אנחנו לא רוצים להתבסס על ה-wait הזה, ה-wait הקבוע של השלוש שניות, נרצה להשפיע על ה-driver, הגדרות ה-WebDriver שלנו.

  11. 03:32

    איך נעשה את זה? אחרי שאני עושה maximize, אני יכול גם לפני, אבל לצורך העניין אני גם יכול אחרי, driver.manage.timeout אנחנו קובעים timeout, תכף אני אסביר מה זה.

  12. 03:52

    יש לנו את ה-class timeout ואת המתודה timeout, כשאני לוחץ את הנקודה יש לי עוד שושור של הגדרות שאני יכול לבחור. אני בוחר ב-implicit weight, זה הסינכרוניזציה שאנחנו רוצים להשתמש בה.

  13. 04:14

    ה-implicit weight מקבל כפרמטרים שני חלקים, שני פרמטרים, חלק אחד הוא המספר עצמו, לדוגמה אני רוצה לחכות חמש שניות, מיד אני אסביר למה אני מחכה חמש שניות, את הארץ שאני צריך להגיד איזה בעצם איזה time unit אני בוחר זאת אומרת מה אני בעצם רוצה להגיד שזה החמש חמש שניות חמש שעות חמש דקות לצורך העניין אנחנו עובדים עם שניות נקודה

  14. 04:54

    פסיק עכשיו אני אסביר את הקוד שכתבתי בעצם הפעלתי פעולה על הדרייבר דרך המתודה manage שיש בתוכה את המתודה timeout שיש בתוכה את האימפליסיט וייט שלחתי שתי פרמטרים 5 יחידות של סקנדס של שניות.

  15. 05:14

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

  16. 05:38

    חמש שניות לפני שאתה מעיף את האקספצ'ן אלמנט not found. אני חוזר ברגע שהדריוור לא מוצא את ה-Web אלמנט שהוא מחפש הוא מחכה חמש שניות מנסה עוד פעם אם גם פעם השנייה הוא לא מוצא את אותו אלמנט האלמנט לא ניתן בחמש שניות אז הוא בעצם יוצא באקספצ'ן של אלמנט not found אבל זה נותן לנו אפשרות של ניסיון שני לפני

  17. 06:12

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

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

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

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

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

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

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

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