Katalon & Selenium

על כלי האוטומציה הנפלא – Katalon Studio כתבתי כבר כמה פוסטים בבלוג שלי. זהו באמת כלי מרשים שמומלץ לבדוק ע"י כל צוות שמעוניין להתחיל ולכתוב טסטים אוטומטיים אצלו באירגון.

כאמור, מי שעובד עם Katalon Studio אינו חייב בהכרח לדעת שפת תכנות ואינו חייב לדעת בהכרח את פקודות סלניום, הכל מגיע אליו עטוף בתצורה מאוד נוחה ומאוד ברורה. למעשה, ה-Katalon הינו מעטפת גם לספריות קוד אחרות כמו Appium ו-REST API, מה שהופך אותו למאוד ורסיטלי.

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

בפוסט זה, אציג כיצד ניתן לקודד עם ספריית הסלניום בתוך Katalon Studio.

אך בואו נראה קודם כל את מקרה הבדיקה שלנו:

  1. ניכנס לאתר: http://atidcollege.co.il/Xamples/bmi (זוהי אפליקציה לבדיקת ערך BMI בהינתן גובה ומשקל)
  2. נזין בשדה המשקל: 70
  3. נזין בשדה הגובה: 180
  4. נלחץ על כפתור ה-Calculate BMI
  5. נוודא כי תוצאת ה-BMI הינה: 22

אז תחילה עם Katalon, אנו נזהה את האלמנטים ונכניס אותם ל-Object Repository:

ונכתוב בעזרתם Test Case:

שימו לב כי ב- Step מספר 7 הכנסתי הערה: TODO.

ב-Step זה ארצה לבצע את הבדיקה (ווידוא ה-BMI Result) לא עם פקודת Katalon שמגיעה out-of-the-box עם המוצר, אלא לקודד בעצמי פקודה סלניומית לשם כך, רק לצורך ההדגמה.

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

driver.findElement(By.id("bmi_result")).getAttribute("value")

כשאנו קוראים ל-step ב-Katalon כפי שראינו למעלה כמו קריאה ל-Open Browser , Click , Set Text וכו', מאחורי הקלעים Katalon יודע ללכת ולקרוא לפונקציה מסויימת שקוראת לפעולה הרלוונטית בסלניום, שייוך המילה לפונקציה המתאימה נעשית בעזרת אנוטציית ה-Keyword שמימשו ב-Katalon.

מה זה אומר ? שאנחנו יכולים גם ליצור פונקציה משלנו ואם נחבר לה את אנוטציות ה-Keyword, נוכל גם את הפונקציה הזו לשייך למילה שמורה בממשק בניית הטסטים של Katalon.

מעולה, אז בשביל ליצור פונקציה כזו נפתח את תפריט ה-Keywords וניצור שם package ומחלקה חדשה עם הפונקציה שנרצה לממש:

כך יוצא שאנו יוצרים package חדש בפרוייקט (קראתי לו example) ומחלקה בשם bmi, וכעת ניתן לקודד בה את מה שאנו רוצים, הקוד הינו בשפת groovy שמאוד מזכירה את Java (ניתן גם לכתוב בשפה זו, שתיהן רצות בתוך ה-JVM):

וזהו הקוד שאני מכניס אל תוך מחלקת bmi בשביל לוודא את הערך של ה-BMI Result:

import org.openqa.selenium.WebElement
import org.openqa.selenium.By.ByXPath
import org.openqa.selenium.WebDriver
import org.openqa.selenium.By
import static org.testng.Assert.assertEquals;

public class BMI {
	WebDriver driver = DriverFactory.getWebDriver();
        WebElement elem = null;

	@Keyword
	public void verifyResult(String expected) {
                elem = driver.findElement(By.id("bmi_result"));
		assertEquals(extractText(elem)), expected);
	}

	public String extractText(WebElement element) {
		return element.getAttribute("value");
	}
}

שימו לב כי יצרתי כאן 2 פונקציות, האחת – verifyResult שמוגדרת עם אנוטציית ה-Keyword שזה אומר שאת פונקציה זו אוכל לראות ולקרוא לה מממשק הטסטים שלנו ב-Katalon (עוד מעט נראה זאת)

ופונקציה נוספת extractText שאינה משוייכת ל-Keyword והיא למעשה פונקציית עזר שנועדה לקבל אלמנט ולהוציא ממנו את הטקסט וזה בשביל לשמור על קוד גנרי יותר.

כעת, כשארצה לקרוא לפונקציית ה-verifyResult, אוכל לראות אותה תחת Custom Keyword:

וכך יראה מקרה הבדיקה החדש שלי:

ה-Custom Keyword למעשה מורכב משם ה-Package עם שם המחלקה ושם הפונקצייה, מכיוון שהגדרתי את הפונקציה כמי שאמורה לקבל פרמטר (expected), אשלח לה את זה תחת ה-Input.

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

וזה נראה גם מצויין ב-Reports של Katalon:

Scroll to Top
דילוג לתוכן