סלניום יודע להתמודד ולעבוד עם כל (טוב נו, רוב) הפקדים המופיעים על הדפדפן, מול חלקם ניתן לעבוד בצורה טריביאלית – לחיצה על כפתור , הכנסת מלל לשדה טקסט, בחירת נתון מתוך רשימה יורדת (Drop Down) ועוד… ישנם פקדים מעט מסובכים ועבודה מולם עם סלניום דורשת מאיתנו קצת יותר מאמץ כמו בחירת תאריך ושעה מתוך ה-Date Picker (שזה יגיע בפוסט נפרד) וגם בחירת פקדים מתוך תפריט השליטה של נגן וידאו HTML5 באתר.

ראינו כאן בעבר פוסט דומה שמאטמט (To Automate) סרטון מ-יוטיוב כשדיברנו על Sikuli Webdriver (על ידי זיהוי תמונת הפקד).

השיטה שאתאר בפוסט זה תעבוד מול השכבה הפנימית שלו על ה-DOM תוך שימוש בפונקציות JavaScript. מומלץ קודם לקרוא את השיעור "עבודה עם JS" שבקורס הסלניום און-ליין.

 

AutomateVideo

 

אז בואו נתחיל ונראה קודם את האתר עליו אנו נעבוד, חיפוש קצר בגוגל של המילים html5 video player יביא אותנו הישר אל האתר: http://videojs.com , עליו אנחנו נרצה לעבוד עם סלניום

videoJS

המפתח לשליטה בוידאו נעשה על ידי שימוש בפונקציית –

document.getElementById()

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

videoJS2

לכן הפונקציה שלנו תהיה:

document.getElementById(\"preview-player_html5_api\")

נראה כמה דוגמאות:

נגן וידאו

document.getElementById("preview-player_html5_api").play();

 הקפא (Pause) וידאו

document.getElementById("preview-player_html5_api").pause();

 טען את הוידיאו מחדש

document.getElementById("preview-player_html5_api").load();

 הקפץ את הוידאו 10 שניות מתחילת הסרטון

document.getElementById("preview-player_html5_api").currentTime=10;

 הגבר את עוצמת השמע

document.getElementById("preview-player_html5_api").volume=0.5;

 השתק את הוידאו

document.getElementById("preview-player_html5_api").muted;

 

בשביל לקרוא לפונקציות אלו מתוך תוכנית הסלניום שלנו נצטרך להשתמש במחלקת – JavascriptExecutor

JavascriptExecutor js = (JavascriptExecutor) driver;

והתוכנית במלואה אמורה להיראות כך:

 

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
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;

public class HTML5Video
{
	public static WebDriver driver;
	public static JavascriptExecutor js;
	
	@Test
	public void testVideo() throws InterruptedException
	{  
		 wait.until(ExpectedConditions.presenceOfElementLocated(By.id("preview-player_html5_api")));
		 //play video
		 js.executeScript("document.getElementById(\"preview-player_html5_api\").play()");
		 Thread.sleep(5000);
		   
		 //pause playing video 
		 js.executeScript("document.getElementById(\"preview-player_html5_api\").pause()");
		 Thread.sleep(1000);	

		 // play video 10 seconds from starting
		 js.executeScript("document.getElementById(\"preview-player_html5_api\").currentTime=10");
		 Thread.sleep(5000);		 
                 
           // decrease volume
		 js.executeScript("document.getElementById(\"preview-player_html5_api\").volume=-1.5");
		 Thread.sleep(1000);
		 
		 // mute video	 
		 js.executeScript("document.getElementById(\"preview-player_html5_api\").mute()");
		 Thread.sleep(2000);
		   
		 //reload video
		 js.executeScript("document.getElementById(\"preview-player_html5_api\").load()");
	}
	
	@BeforeClass
	public static void openBrowser()
	{		
		System.setProperty("webdriver.chrome.driver", "C://Projects/Selenuim/Drivers/chromedriver.exe"); 
		driver = new ChromeDriver();
		driver.manage().window().maximize();	 
		driver.get("http://videojs.com/");
		js = (JavascriptExecutor) driver;
	}

	@AfterClass
	public static void closeBrowser()
	{
		driver.quit();
	}
}

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

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