PracticU

כתיבת טסטים - סינכרון - המתנה לטעינת אלמנטים

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

כתיבת טסטים - סינכרון - המתנה לטעינת אלמנטים
הסנכרון בטסטים על אפליקציה הוא ההמתנה לאלמנט לפני שמנסים לזהות אותו ולפעול עליו. בשיעור שלוש שיטות, זהות לאלו מ-Selenium.
השלבים העיקריים
1. Implicit Wait: הגדרה כללית אחת לכל זיהוי אלמנט דרך ה-driver, בעזרת driver.manage().timeouts().implicitlyWait. אם האלמנט לא נמצא, יש זמן סבלנות (למשל חמש שניות) לפני שנזרקת שגיאה. זה מגביר את יציבות הטסטים.
2. המתנה סטטית: Thread.sleep במילי-שניות. הטסט עוצר, מחכה ואז ממשיך. פשוט מאוד, אבל קבוע.
3. Explicit Wait: המתנה נקודתית לתנאי מסוים על אלמנט מסוים. זו השיטה המתוחכמת והאיכותית ביותר.
פקודות והגדרות
הדגמה של Explicit Wait על שדה "למי המתנה":
- מוצאים את ה-ID של השדה ב-UI Automator.
- WebDriverWait wait = new WebDriverWait(driver, timeInSeconds).
- wait.until(ExpectedConditions...) עם תנאי כמו visibilityOfElementLocated או elementToBeClickable, ו-locator של By.id.
- אחרי ההמתנה מזהים את האלמנט ושולחים sendKeys.
שימו לב
- אם האלמנט פשוט לא קיים, שום סנכרון לא יעזור ותתקבל חריגה שהאלמנט לא נמצא.
- בהגדרת Implicit Wait לא כדאי זמן גדול מדי, כדי לא לגרום להמתנה מיותרת. לא צריך יותר מחמש שניות, ולרוב מספיקים חלקי שנייה.
אפשר עכשיו לשלב Implicit Wait כללי יחד עם Explicit Wait נקודתי, בלי התנגשות ביניהם.
השיעור הבא בקורס: כתיבת טסטים - צילום מסך

פרקי ההרצאה: כתיבת טסטים - סינכרון - המתנה לטעינת אלמנטים

  1. 00:00

    מה זה Synchronization בבדיקות

  2. 00:40

    המתנה ו-Exception כשאלמנט לא נמצא

  3. 01:15

    Implicit Wait כהגדרה כללית

  4. 02:14

    איך Implicit Wait משפר יציבות

  5. 02:51

    כמה זמן להגדיר ב-Implicit Wait

  6. 03:28

    המתנה סטטית עם Thread.sleep

  7. 04:05

    מתי להשתמש ב-Thread.sleep

תמלול ההרצאה: כתיבת טסטים - סינכרון - המתנה לטעינת אלמנטים

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

  1. 00:02

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

  2. 00:27

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

  3. 00:44

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

  4. 00:55

    כמובן, אני רוצה להזכיר שאם אלמנט לא קיים או אלמנט לא מופיע או האינספקטור שלנו, הזיהוי שלנו, Find Element by ID or by Expat or by CSS Selector היינו נכון הסינכרוניזיישן לא יעזוב אנחנו נקבל את האקספשן שהאלמנט אינו נמצא והדרייבר בעצם לא יצליח לאתר אותו בתוכו. כשאנחנו מדברים על סינכרוניזיישן בסלניום שזה יכול

  5. 01:21

    להיות גם סלניום משולב באפיום בבדיקות מובייל, בבדיקות אנדרואיד, בבדיקות דיווייזים, בבדיקות אפליקציה מובייל השיטה הראשונה היא Implicit Wait מה מה זה אומר האימפליסיט וייט?

  6. 01:35

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

  7. 01:47

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

  8. 02:18

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

  9. 02:44

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

  10. 03:10

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

  11. 03:22

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

  12. 03:51

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

  13. 04:19

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

  14. 04:39

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

לקורס המלא: קורס Appium אונליין

ההרצאה הקודמת: כתיבת טסטים - ביצוע מחוות - גלילה בעזרת האצבע

ההרצאה הבאה: כתיבת טסטים - צילום מסך

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

  • הוספת סינכרון הטסט - לדף הנבדק
  • כל מה שצריך לדעת על טסטים ב-QA - חלק 1
  • כתיבת Test Case
  • כתיבת SCRIPT ב-SQL

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

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