PracticU

Switch to Window

בלי כתוביותעם כתוביות
PracticU › קורס סלניום בסיסי - בדיקות אוטומטיות - Selenium › Switch to Window
מילון מושגים:
Selenium - כלי לאוטומציה של דפדפן, המשמש בעיקר לבדיקות אוטומטיות של אתרים ויישומי אינטרנט.
כפתור - רכיב בממשק המשתמש שהמשתמש לוחץ עליו כדי להפעיל פעולה, כמו שליחת טופס או מעבר לדף אחר.
JavaScript - שפת תכנות שרצה בעיקר בדפדפן ומוסיפה אינטראקטיביות לדפי אינטרנט. רצה גם בצד השרת באמצעות Node.js.
לולאה - מבנה בקרה שחוזר על קטע קוד שוב ושוב כל עוד תנאי מתקיים או עבור כל פריט באוסף.
URL - הכתובת שמזהה משאב באינטרנט, למשל דף אתר, וכוללת פרוטוקול, שם מארח ונתיב.
דפדפן - תוכנה שמציגה דפי אינטרנט ומריצה את הקוד שבהם, ומאפשרת לגלוש בין אתרים, למשל Chrome או Firefox.

Switch to Window
פקודת switchTo() משמשת למעבר בין פריימים ו-Alerts, וגם למעבר בין חלונות. כשדף פותח חלון חדש, יש ל-Selenium שני חלונות פתוחים, והוא צריך לדעת על איזה חלון לפעול. בשיעור הזה נראה איך עוברים לחלון החדש, מבצעים בו פעולות וחוזרים לחלון המקורי.
למה צריך את זה
חלון חדש נפתח לפעמים כשהמשתמש לוחץ על כפתור, לדוגמה לצורך הרשמה או לקבלת מידע נוסף. Selenium לא יודע מעצמו לאיזה חלון לעבור, ולכן צריך לכוון אותו. בדף שנבדק בסרטון הכפתור מפעיל פונקציית JavaScript שקוראת ל-window.open, ולכן צריך להשתמש ב-switchTo().window.
השלבים העיקריים
1. שמירת החלון המקורי: לפני הלחיצה על הכפתור שומרים את ה-handle של החלון הנוכחי בעזרת driver.getWindowHandle(). זהו מזהה ייחודי של החלון.
2. לחיצה על הכפתור: הכפתור פותח את החלון החדש, וה-Selenium מקבל handle נוסף.
3. איתור החלון החדש: שולפים את כל ה-handles בעזרת driver.getWindowHandles(), שמחזיר קולקשן, ועוברים עליו בלולאה for. כל handle שאינו של החלון המקורי הוא של החלון החדש.
4. מעבר ופעולות: עוברים לחלון החדש בעזרת driver.switchTo().window(...), מגדילים אותו עם maximize() ומדפיסים את ה-URL שלו.
5. סגירה וחזרה: סוגרים את החלון החדש עם close(), וחוזרים לחלון המקורי בעזרת switchTo().window עם ה-handle ששמרנו בהתחלה.
שימו לב
בסרטון משתמשים ב-close() ולא ב-quit() כדי לסגור את החלון החדש. close() סוגר רק את החלון הנוכחי וממשיך את הריצה, ו-quit() מסיים את כל הדפדפן. קריאות Thread.sleep נוספו רק כדי לראות את המעברים בעין, ואין בהן צורך בטסט אמיתי.
בסיום השיעור הטסט חוזר לחלון המקורי ומדפיס את ה-URL שלו, וכך אפשר לוודא שהמעברים בין החלונות עבדו.
השיעור הבא בקורס: Automation Framework

פרקי ההרצאה: Switch to Window

  1. 00:00

    הקדמה: מעבר בין חלונות בסלניום

  2. 00:38

    מה זה חלון חדש בסלניום

  3. 01:35

    הסיבות לפתיחת חלונות חדשים

  4. 02:54

    תיאור הדמו: פתיחת חלון וסגירתו

  5. 04:24

    בדיקת מקור הדף לכפתור window.open

  6. 05:06

    יצירת מחלקה עם ChromeDriver

  7. 05:49

    שמירת מזהה החלון הראשי

  8. 07:34

    הסבר על מזהה החלון CDwindow

תמלול ההרצאה: Switch to Window

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

  1. 00:02

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

  2. 00:30

    לתוך החלון שאותו אנחנו בודקים סוויץ' 2 פריימים בדק ראינו שאנחנו אנחנו יכולים לבצע סוויץ' 2 לאלרט JavaScript alert בשיעור הקרוב כאמור נדבר על מעבר לחלונות חדשים שנפתחים מעבר לחלון המרכזי שאנחנו עובדים איתו מה זה חלון בסלניום בעצם חלון או חלון חדש בסלניום זה WebDriver חדש זה דרייבר חדש הסלניום צריך מאיתנו את

  3. 01:05

    ההכוונה על איזה DOM על איזה Document Object Model להסתכל ברגע שפתוח לו הדום הישן ובמקביל אליו פתוח הדום חדש איזשהו חלון חדש הוא הסלניום בעצם ה-Java או הטכנולוגיה של ה-WebDriver Technology לא יודעת לאן להסתכל על איזה דום היא צריכה להשפיע על איזה כפתורים היא צריכה ללחוץ על איזה WebElement היא צריכה להשפיע ואנחנו בעצם צריכים

  4. 01:33

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

  5. 01:46

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

  6. 02:14

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

  7. 02:44

    או פונקציה שפותחת window.open כמו שאנחנו רואים. אם זה window.open אנחנו צריכים להשתמש ב-switch to window.

  8. 02:54

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

  9. 03:07

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

  10. 03:41

    לבצע בדמו הקרוב זה בעצם גישה לחלון המרכזי החלון שה-URL שלו הוא זה, לחיצה על הכפתור New Browser Window, לבצע maximize לחלון החדש שנפתח, להדפיס את ה-URL שלו, לסגור אותו ואז להדפיס את ה-URL של החלון הראשוני, החלון הבסיסי שהתחלתי איתו.

  11. 04:09

    אז בואו נראה איך אנחנו עושים את זה. ראשית, רציתי לפני שאנחנו רואים את הסינטקס עצמו של הג'אווה, להראות שיש לנו פה את ה-window.open בלחיצת הכפתור, אם אני מסתכל על ה-view source של הדף שאותו בדקתי, איך הגעתי אליו, יש לי את הדף של הכפתור, ואני לוחץ מרכש אם אני, אני בוחר בתפריט view page source,

  12. 04:41

    וכאן נפתח לי החלון של ה-source של הדף, חיפשתי את ה-new browse win, שזה בעצם, מצאתי אותו לפי ה-title של הכפתור, זה הכפתור הזה browser window בעצם יש לי אותו פה new browser window וראיתי שהוא מפעיל את הפונקציה JavaScript הזאת שאני רואה פה שהיא מבצעת את הפקודה window זאת אומרת אנחנו לא מתעסקים באלרט

  13. 05:10

    או ב-i-frame אלא ב-window חדש. אוקיי אז אנחנו יכולים להתחיל לעבוד ויצרתי לעצמי קלאס Java קלאס דומה למה שיצרנו בשיעורים הקודמים יש לנו את ההכרזת משתלם מערכת את את העדכון של ה-WebDriver מסוג ChromeDriver וכאן יש לנו מקסימייז לחלון הראשוני שלנו ואת השיעור של ה-Implicit Weight,

  14. 05:36

    איזשהו סליפ קטן בסיסי אם הוא לא מוצא אלמנט, הוא אוהב אלמנט, הוא מחכה כמה שניות ורק אז יוצא אל אלמנט Not Found והוא מחכה 5 שניות כמו שהכרנו בנושא של ה-Weight וכאן יש לנו את פקודת הגט, דרייבר נקודה גט ואת החלון שעליו אנחנו רוצים לבצע בדיקה.

  15. 05:59

    אז כרגע מה שאנחנו צריכים לעשות בנוסף לפעולות הרגילות של הלחיצה על הכפתור זה get current guid handle. מה זה ה-guid handle? ה-guid handle זה בעצם אותו ID של החלון המרכזי שאותו אנחנו רוצים לבדוק.

  16. 06:14

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

  17. 06:54

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

  18. 07:32

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

  19. 07:46

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

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

ההרצאה הקודמת: Switch to JS Alert

ההרצאה הבאה: Automation Framework

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

  • Switch
  • אובייקט Window (דפדפן עצמו)
  • משפט Switch, Case - חלק 1
  • ביטויי Switch Case

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

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