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

לשם כך נלמד על מחלקה וממשק שעד עכשיו לא הצגנו: מחלקת EventFiringWebDriver וממשק – WebDriverEventListner.

על פי השם, אין כאן יותר מידיי מקום לבלבול, ה-EventFiringWebDriver היא מחלקה העוטפת את ה-Webdriver המוכר לנו ויורה תרחישים (או במילים אחרות – פעולות שאנו מבצעים). ה-WebDriverEventListner הוא כאמור ממשק אותו נצטרך לממש ותפקידו הוא לקלוט את כל התרחישים שנורו ולטפל בהם, בד"כ על ידי כתיבתם לקובץ חיצוני או אפילו סתם על המסך.

חשוב לצייין כי מחלקת ה-EventFiringWebDriver היא מחלקה יורשת מ-Webdriver , כך שנוכל תמיד להשתמש בפעולות המוכרות לנו כמו FindElementsByName וכו' ובנוסף לכך נוכל להשתמש בעוד 2 פונקציות חדשות: Register ו-UnRegister , כאשר ה-Register תרשום (להבנת העניין – תחבר) אותנו למימוש שביצענו ב-WebDriverEventListner בשביל להאזין לתרחישים, ואילו ה-UnRegister תעשה את הפעולה ההפוכה ותנתק אותנו.

 

בואו תחילה נכתוב מחלקה חדשה היורשת מ-WebDriverEventListner ומממשת את הפעולות, המימוש שלנו יהיה פשוט, כל פעולה שנעשה בממשק, נדפיסה על המסך.

 

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.events.WebDriverEventListener;
 
public class EventHandler implements WebDriverEventListener
{
 
public void afterChangeValueOf(WebElement arg0, WebDriver arg1)
{ 
   System.out.println("inside method afterChangeValueOf on " + arg0.toString());
}
 
public void afterClickOn(WebElement arg0, WebDriver arg1)
{
   System.out.println("inside method afterClickOn on " + arg0.toString());
}
 
public void afterFindBy(By arg0, WebElement arg1, WebDriver arg2)
{
   System.out.println("Find happened on " + arg1.toString()
   + " Using method " + arg0.toString());
}
 
public void afterNavigateBack(WebDriver arg0)
{ 
   System.out.println("Inside the after navigateback to " + arg0.getCurrentUrl());
}
 
public void afterNavigateForward(WebDriver arg0)
{
   System.out.println("Inside the afterNavigateForward to " + arg0.getCurrentUrl());
}
 
public void afterNavigateTo(String arg0, WebDriver arg1)
{
   System.out.println("Inside the afterNavigateTo to " + arg0);
}

public void afterScript(String arg0, WebDriver arg1)
{
   System.out.println("Inside the afterScript to, Script is " + arg0);
}

public void beforeChangeValueOf(WebElement arg0, WebDriver arg1)
{
   System.out.println("Inside the beforeChangeValueOf method");
}
 
public void beforeClickOn(WebElement arg0, WebDriver arg1)
{
   System.out.println("About to click on the " + arg0.toString());
}
 
public void beforeFindBy(By arg0, WebElement arg1, WebDriver arg2)
{
   System.out.println("Just before finding element " + arg1.toString());
}
 
public void beforeNavigateBack(WebDriver arg0)
{
   System.out.println("Just before beforeNavigateBack " + arg0.getCurrentUrl()); 
}
 
public void beforeNavigateForward(WebDriver arg0)
{
  System.out.println("Just before beforeNavigateForward " + arg0.getCurrentUrl());
}
 
public void beforeNavigateTo(String arg0, WebDriver arg1)
{
   System.out.println("Just before beforeNavigateTo " + arg0);
}
 
public void beforeScript(String arg0, WebDriver arg1)
{
   System.out.println("Just before beforeScript " + arg0);
}
 
public void onException(Throwable arg0, WebDriver arg1)
{
   System.out.println("Exception occured at " + arg0.getMessage()); 
}
 
}

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

ניצור תחילה את ה-Instance הרגיל שלנו לדרייבר של הפיירפוקס וניצור גם EventFiringWebDriver עם חיבורו לדרייבר שלנו:

 

* רוצים לראות את המשך הפוסט ? צרו עימי קשר ונקבע פגישה לקורס פרונטלי

 


arrowBack arrowMain arrowFor

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