Tuesday, February 14, 2012

Flash with selenium

Selenium/Webdriver cannot click on the flash application. Only thing it can do is invoke the functions defined in as3 scripts using javascript.  For functions to be accessible to javascript it should be added to ExternalInterface. ExternalInterface is used to call javascript function from/to flash.

ExternalInterface.addCallback("setText", setText) makes setText method invokable from javascript

        WebDriver driver = new FirefoxDriver();
        WebDriverBackedSelenium selenium = new WebDriverBackedSelenium(driver, "");
        driver.get("http://sitestress.webmetrics.com/test/flashtest.html");
        selenium.getEval("var movie = window.document.extinterfaceexample; movie.jsToFlash('water in water');");

        driver.get("http://bowser.effectgames.com/~jhuckaby/zeroclipboard/");
//        selenium.type("fe_text", "bla bla bla");
        selenium.getEval("var playerid = window.document.ZeroClipboardMovie_1; playerid.setText('james bond')");

For above example  'ZeroClipboardMovie_1' is the object id of the flash movie. It is used to create a variable for accessing the as3 functions.

For more details checkout Flash Selenium