יש לכם כבר מערך בדיקות אוטומטיות, אתם מריצים אותו על בסיס קבוע , יש טסטים שנופלים, יש כאלו שעוברים, כתבתם כבר תשתית ללוגים, דוחו"ת , אפילו הגדלתם לעשות והטמעתם פונקציונליות אשר לוקחת צילום מסך בכל נפילה של טסט , או סתם ככה בשביל להשוות תמונות… מה עוד ? כיצד ניתן לשפר את מערך ה-Tracking של ההרצות שלכם ?

 

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

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

בקוד שלנו נבצע שתי קריאות לספריות העבודה שלנו:

import atu.testrecorder.*;
import atu.testrecorder.exceptions.ATUTestRecorderException;

 

בשביל להתחיל לעבוד עם ה-API ניצור instance מהמחלקה הראשית של ה-TestRecorder כך:

ATUTestRecorder recorder = new ATUTestRecorder(FILE_PATH,FILE_NAME,false);

אנו רואים כי ה-Construstor שלנו מקבל שלושה ערכים:

FILE_PATH – אותו נתיב לשם אנו מעוניינים לשמור את קובץ הסרטון שלנו

FILE_NAME – שם הסרטון שאנו רוצים לתת (הקובץ יקודד וישמר כקובץ MOV)

TRUE / FALSE – מאפשר הקלטת סאונד בסרטון שלנו (TRUE – כן , FALSE – לא)

 

כעת מה שנותר לנו זה להפעיל את שתי המתודות של האובייקט שיצרנו:

recorder.start();  // Start Recording
recorder.stop();   // Stop Recording

 

בואו נראה דוגמא. בתוכנית הבאה אני נכנס לאתר: https://atidcollege.co.il/Xamples/bmi שהיא אפליקציה קטנה שכתבתי ב-JS והיא למעשה יודעת לחשב את המסה כנגד משקל הגוף (BMI), כאשר מכניסים את המשקל והגובה של האדם והיא מוציאה את ערך ה-BMI שלו.

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

נראה תחילה את הסרטון שהצלחתי לייצא מהרצת התוכנית ואח"כ נעבור למימוש הקוד :

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

 

והקוד נראה כך:

import static org.junit.Assert.*;
import java.util.concurrent.TimeUnit;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import atu.testrecorder.*;
import atu.testrecorder.exceptions.ATUTestRecorderException;

public class ScreenCast
{
	private static WebDriver driver;
	private static ATUTestRecorder recorder;
	private static WebDriverWait wait;	
	private static String filePath = "C://Projects//Selenuim//ScreenCasts";
    private static String fileName = "myMovie";
	private String expected;
	
	
	@Test
	public void testcase1() throws InterruptedException
	{
		expected = "22";
		driver.findElement(By.id("reset_data")).click();
		driver.findElement(By.id("weight")).sendKeys("70");
		driver.findElement(By.id("hight")).sendKeys("180");
		driver.findElement(By.id("calculate_data")).click();
		wait.until(ExpectedConditions.textToBePresentInElementValue(By.id("bmi_means"), "That"));
		assertEquals(expected, driver.findElement(By.id("bmi_result")).getAttribute("value"));		
	}
	
	@Test
	public void testcase2()
	{
		expected = "33";
		driver.findElement(By.id("reset_data")).click();
		driver.findElement(By.id("weight")).sendKeys("120");
		driver.findElement(By.id("hight")).sendKeys("190");
		driver.findElement(By.id("calculate_data")).click();
		wait.until(ExpectedConditions.textToBePresentInElementValue(By.id("bmi_means"), "That"));
		assertEquals(expected, driver.findElement(By.id("bmi_result")).getAttribute("value"));	
	}
	
	@Test
	public void testcase3()
	{
		expected = "15";
		driver.findElement(By.id("reset_data")).click();
		driver.findElement(By.id("weight")).sendKeys("60");
		driver.findElement(By.id("hight")).sendKeys("200");
		driver.findElement(By.id("calculate_data")).click();
		wait.until(ExpectedConditions.textToBePresentInElementValue(By.id("bmi_means"), "That"));
		assertEquals(expected, driver.findElement(By.id("bmi_result")).getAttribute("value"));
		driver.findElement(By.id("reset_data")).click();
	}
	
	@BeforeClass
	public static void openBrowser() throws ATUTestRecorderException
	{	
		recorder = new ATUTestRecorder(filePath, fileName, false);
		System.setProperty("webdriver.chrome.driver", "C://Selenuim/Drivers/chromedriver.exe"); 
		driver = new ChromeDriver();
		driver.manage().window().maximize();
		recorder.start(); 
		driver.get("http://blog.yoniflenner.net/bmi");
		driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
		wait = new WebDriverWait(driver, 10);
	}

	@AfterClass
	public static void closeBrowser() throws ATUTestRecorderException
	{
		recorder.stop(); 
		driver.quit();		
	}
}

 

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