Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / selenium

Selenium Testing with FlexPilot

3.00/5 (1 vote)
4 Oct 2010CPOL1 min read 15K  
Selenium testing with FlexPilot

I continued my quest for a solution to create automated tests using seleniumRC and C# and this time, I took a look at this new project called Flex Pilot.

FlexPilot is a open source testing tool that integrates with selenium, it has a bootstrapper to make the application testable, it is able to use a selenium IDE recorder, and you can access elements using chain syntax (like accessing with xpath).

Here is what I did to start building tests with flex pilot:

  • Rebuilded flexpilot: source is http://github.com/mde/flex-pilot/archives/master and executed build.py this will update FlexPilot.swf and FPBootstrap.swf located under org/flex_pilot folder (place this file where the app is located)
  • Copied the content from src/org/flex_pilot folder to the flex's app libs folder example C:\source\MyAppInFlex\libs
  • Imported Bootstrap in the flex app
    C#
    import org.flex_pilot.FPBootstrap;
  • Set FPBootstrap.flex_pilotLibPath the path on the server where FPBootstrap can find FlexPilot.swf. The Loader fetches FlexPilot.swf via a Loader class.
    C#
    FPBootstrap.flex_pilotLibPath = '/flash/org/flex_pilot/FlexPilot.swf';
  • Initialize FPBootstrap - this fetches and loads FlexPilot.swf, and gives FlexPilot Flash a context to use for testing. This context is usually a reference to app’s Stage.
    C#
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
    layout="absolute" xmlns:local="*" creationComplete="init() 
    applicationComplete="initFlexPilot()">
    ......
    <mx:Script>
            <![CDATA[
                ...............
                import mx.utils.ObjectUtil;    
                import org.flex_pilot.FPBootstrap;
    
                ...............
                private function initFlexPilot():void
                {
                    FPBootstrap.flex_pilotLibPath = 'FlexPilot.swf';
                    FPBootstrap.init(stage);
                }
    ......
  • Compiled application: mxmlc -source-path=. -source-path+=../libs MyAppInFlex.mxml -o MyAppInFlex.swf
  • If present, remove tags like <noscript> around the flex object in your HTML.
  • If the configuration is working, Firebug will return “function” when calling document.getElementById('MyAppInFlex').fp_click
  • This is the “hello world” example of a test method on C#
    C#
    [TestMethod]
    public void TestMethodFlexPilot()
    {
        selenium.Open("http://localhost/testapp.html");
        selenium.RunScript("document.getElementById('MyAppInFlex').fp_type({name:'usernameTextInput', 
                            text:'Flex Pilot'})");
        selenium.RunScript("document.getElementById('MyAppInFlex').fp_click
                          ({name:'secureCheckBox'})");
    }
FlexPilot has seleniumRC client drivers available for Java, Python and Ruby (no C# client driver available yet).

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)