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

אך תחילה בואו נבין מה זה: window handle . בזמן שאנחנו יוצרים מופע (Instance) של Webdriver , למשל:

driver = new FirefoxDriver();

מאחורי הקלעים סלניום מקצה מזהה ייחודי לכל חלון שפתוח בדפדפן (אותו אחד אליו קישרנו את ה-Driver, במקרה שלנו – פיירפוקס), המזהה היחודי הזה הוא למעשה מחרוזת שיכולה להכיל תווים ומספרים, המחרוזת נקראת window handle.

בעזרת ה-window handle סלניום (שמקצה אותה) יכול לזהות כל חלון וחלון ולגשת אליו.

* שימו לב, חלונות של הדפדפן הם היחידים שלהם סלניום מקצה window handle וניתן לגשת אליהם, חלון פופ-אפ של windows לדוגמא אינו יכול לעבוד במקרה הזה, (פופ-אפ windows יכול לקפוץ כאשר אנו רוצים להעלות קובץ ממערכת ההפעלה לדוגמא). לבעיה זו אגב, ישנם כמה פתרונות, אחד מהם אציג בשיעור 21  , השני בשיעור 22 והאחרון בטיפים.

 

פונקציית GetWindowHandle:

תיאור: הפונקציה מחזירה מחרוזת המכילה את המזהה הייחודי של החלון בו אנו נמצאים, נשמור אותה בתוך string

דוגמא:
String my_handle= driver.getWindowHandle();

 

פונקציית GetWindowHandles:

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

דוגמא:
Set<String> my_handles= driver.getWindowHandles();

 

פונקציית SwitchTo Window:

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

דוגמא:
driver.switchTo().window("windowName");

דרך נוספת היא להעביר לפונקציה במקום מחרוזת קבועה (WindowName) את ערך ה-window handle, כך:

for (String handle : driver.getWindowHandles()) {
 
    driver.switchTo().window(handle);}

 


 

פונקציית SwitchTo Frame:

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

דוגמא:
driver.switchTo().frame("frameName");

 

פונקציית SwitchTo Alert:

תיאור: הפונקציה מעבירה את הפוקוס לחלון פופ-אפ בדפדפן, הפונקציה מקבלת מחרוזת בה שם החלון

דוגמא:
Alert alert = driver.switchTo().alert();

דרך נוספת לעבור לחלון פופ-אפ עם שימוש ב-getWindowHandles:

String my_handle = driver.getWindowHandle();    
driver.findElement(By.id("ElementID")).click();  // פעולה המקפיצה את הפופ-אפ

while (driver.getWindowHandles().size() < 2)     // המתנה עד שחלון הפופ-אפ יקפוץ
{
   Thread.sleep(500);
}
Set handles = driver.getWindowHandles();         // מצא את כל החלונות הפתוחים ותכניס אותם לסט
for (String windowHandle : handles)              // תעבור על כל אחד מן החלונות
{
  if (!windowHandle.equals(my_handle))           // כנס לתנאי במידה והחלון הרצוי שונה מהחלון הנוכחי
  {
     driver.switchTo().window(windowHandle);     // תעבור לחלון הרצוי
     break;
  }
}

 

 


arrowBack arrowMain arrowFor

השאר הערה\הודעה