מבוא
כמפתח Java, ייתכן ששמעת על הספרייה הפופולרית הנקראת Lombok. במאמר זה, נחקור שיטת הרחבה, תכונה של לומבוק שהיא יחסית פחות מוכרת. בנוסף, נדון כיצד שיטות הרחבה יכולות לספק ל-Selenium WebDriver פונקציונליות חסרה.
מהו לומבוק?
לומבוק היא ספריית Java המסייעת להפחית קוד boilerplate בתוכניות Java על ידי מתן סט של הערות (annotations) שיכולות ליצור מבני קוד נפוצים, כגון getters, setters ו-constructors, בזמן קומפילציה.
לדוגמה, שקול את מחלקת המשתמש הבאה ב-Java:
public class User {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
עם לומבוק, אתה יכול להוסיף הערה למחלקה עם @Data
ולומבוק ייצור עבורך את ה-getters, setters וה-constructors הנדרשים בזמן קומפילציה:
import lombok.Data;
@Data
public class User {
private String name;
private int age;
}
זה יכול לחסוך הרבה זמן ולהפחית את כמות הקוד שעליך לכתוב.
לומבוק מספקת גם הערות שימושיות אחרות, כגון @Getter
, @Setter
,
ו-@Builder
, המאפשרות לך ליצור מבני קוד ספציפיים בהתאם לצרכים שלך.
מהן שיטות הרחבה?
בנוסף למתן הערות ליצירת קוד, לומבוק מציגה גם תכונה חדשה הנקראת שיטות הרחבה (extension methods). שיטות הרחבה הן דרך להוסיף שיטות חדשות למחלקה קיימת מבלי לשנות את המחלקה עצמה.
ל-C# יש שיטות הרחבה דומות לקונספט זה. שיטה זו מאפשרת לך להוסיף שיטות חדשות למחלקה על ידי יצירת מחלקה סטטית המכילה את השיטות הרצויות. שיטת הרחבה של לומבוק פועלת באופן דומה, אך היא מוגדרת כשיטה סטטית בתוך המחלקה.
כדי להגדיר שיטת הרחבה בלומבוק, אתה מוסיף הערה לשיטה סטטית עם @ExtensionMethod
.
הפרמטר הראשון של השיטה חייב להיות סוג המחלקה המורחבת,
ואז ניתן לקרוא לשיטה על מופעים של אותה מחלקה כאילו הייתה שיטת מופע.
לדוגמה, שקול את שיטת ההרחבה הבאה שמוסיפה שיטת reverse()
למחלקת String
:
package extensions;
import lombok.experimental.UtilityClass;
@UtilityClass
public class StringExtension {
public String reverse(String self) {
return new StringBuilder(self).reverse().toString();
}
}
ניתן כעת לקרוא לשיטת הרחבה זו על כל אובייקט String
כאילו הייתה שיטת מופע:
package extensions;
import lombok.experimental.ExtensionMethod;
@ExtensionMethod(StringExtension.class)
public class StringExample {
public static void main(String[] args) {
String str = "Hello World!";
System.out.println(str.reverse());
}
}
שיטות הרחבה עם סלניום
כעת, כשיש לנו הבנה בסיסית של שיטות הרחבה וכיצד הן פועלות, בואו נראה כיצד נוכל להשתמש בהן בשילוב עם Selenium WebDriver.
סלניום היא ספריית קוד פתוח פופולרית לאוטומציה של דפדפני אינטרנט. היא מספקת סט של ממשקי API המאפשרים לך לשלוט בדפדפן אינטרנט ולקיים אינטראקציה עם דפי אינטרנט באופן תכנותי.
כתיבת קוד ארוך וחוזרני לביצוע משימות נפוצות יכולה להיות אחד האתגרים בשימוש בסלניום. זה כולל מציאה ואינטראקציה עם אלמנטים בדף אינטרנט. שימוש בשיטות הרחבה יכול לפשט ולשפר את קריאות הקוד הזה.
לדוגמה, שקול את הקוד הבא המשתמש בסלניום כדי למצוא אלמנט בדף אינטרנט וללחוץ עליו:
package extensions;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class SeleniumExample {
public static void main(String[] args) {
WebDriver driver = new ChromeDriver();
driver.get("https://www.example.com");
WebElement element = driver.findElement(By.id("submit-button"));
element.click();
}
}
שיטת הרחבה זו מפשטת את תהליך מציאת ולחיצה על אלמנט בדף אינטרנט.
במקום למצוא את האלמנט ולאחר מכן לקרוא לשיטת click()
עליו בנפרד,
ניתן לקרוא לשיטת findAndClick()
ישירות על אובייקט ה-WebDriver
.
package extensions;
import lombok.experimental.UtilityClass;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
@UtilityClass
public class WebDriverExtension {
public static void findAndClick(WebDriver self, By by) {
WebElement element = self.findElement(by);
element.click();
}
}
כך תשתמש בשיטת ההרחבה findAndClick()
בקוד שלך:
package extensions;
import lombok.experimental.ExtensionMethod;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
@ExtensionMethod(WebDriverExtension.class)
public class SeleniumExample {
public static void main(String[] args) {
WebDriver driver = new ChromeDriver();
driver.get("https://www.example.com");
driver.findAndClick(By.id("submit-button"));
}
}
קוד זה קצר יותר וקל יותר לקריאה מהגרסה המקורית, והוא מספק את אותה פונקציונליות.
לסיכום
במאמר זה, דנו בספריית לומבוק ובתכונת שיטות ההרחבה שלה. שיטות הרחבה הן דרך שימושית להוסיף שיטות חדשות למחלקה קיימת מבלי לשנות את המחלקה עצמה, וניתן להשתמש בהן כדי לפשט ולשפר את קריאות הקוד שלך.
ניתן להוסיף פונקציונליות חסרה ל-Selenium WebDriver באמצעות שיטות הרחבה של לומבוק. כתוצאה מכך, אינטראקציה עם דפי אינטרנט תהיה קלה יותר.
בסך הכל, לומבוק ושיטות ההרחבה שלה יכולות להיות תוספת חשובה לארגז הכלים שלך ב-Java, והן יכולות לעזור לך לכתוב קוד נקי וקריא יותר.
בדיקות מהנות!