Adobe Flex 3 ヘルプ

再生エージェントの作成

Flex アプリケーションでのユーザー操作の記録と再生を行うカスタムエージェントを作成できます。このプロセスは、単にメトリックのログを行う目的でユーザー操作を記録するよりもはるかに複雑です。

このカスタムエージェントは、異なる環境情報を使用するエージェント(Flex のオートメーション機能に含まれる QTP エージェントなど)と一緒には使用できません。そのため、このエージェントを使用する場合は、QTP を使用してスクリプトを記録および再生することは避けてください。

AutoQuick サンプルの使用

この AutoQuick サンプルは、http://www.adobe.com/go/flex_automation_agent_apps で別途ダウンロードできます(autoquick_src.zip ファイル)。

カスタムの再生エージェントを記述する前に、AutoQuick サンプルを試してみてください。そうすれば、エージェントがユーザー操作を再生するためにどのような情報を記録する必要があるかを理解することができます。

AutoQuick サンプルを使用すると、XML ファイルでコーデックを指定して、値の変換に使用できるコーデックのマップを作成する方法を体験できます。

  1. autoquick_src.zip ファイルを、http://www.adobe.com/go/flex_automation_agent_apps からダウンロードして展開します。
  2. AutoQuick.swc ファイルの構築の指示に従って、AutoQuick.swc ファイルを作成します。
  3. AutoQuick.swc ファイルを、アプリケーションのコンパイラがアクセスできる場所にコピーします。
  4. Flex アプリケーションに AutoQuick.swc ライブラリを含めます。

    Flex Builder を使用している場合は、プロジェクト/プロパティ/Flex ビルドパス/ライブラリパスを選択して、AutoQuick.swc ファイルを追加します。「コードにマージされます」オプションが有効になっていることを確認してください。

    コマンドラインコンパイラを使用する場合は、flex-config.xml ファイルにこの SWC ファイルを参照するエントリを追加します。例えば、次のようにします。

    <include-libraries>
        <library>c:/myfiles/flex3/agent/simpler_replay/AutoQuick.swc</library>
    </include-libraries>
    
    

    または、コマンドラインで、include-libraries オプションを使用してファイルを追加できます。次に例を示します。

    mxmlc -C:\home\dev\depot\flex\sdk\bin>mxmlc -include-libraries+=c:/myfiles/flex3/agent/simpler_replay/AutoQuick.swc c:/myfiles/flex3/agent/myreplay/ReplayExample.mxml
    
    

    SWC ファイルの追加には、必ず += 演算子を使用します。こうすると、ライブラリパスにある他の SWC ファイルを置換することなく、この SWC ファイルをパスに追加することができます。

  5. 何らかのユーザー操作を受け付けるサンプルアプリケーションを作成します。例えば、単に Button コントロールだけを持つ単純なアプリケーションを作成してみます。
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
        <mx:Script>
            <![CDATA[
                private function clickHandler():void {
                    b1.label = "clicked";
                }
            ]]>
        </mx:Script>
        <mx:Button id="b1" label="click me" click="clickHandler()"/>
    </mx:Application>
    
    
  6. HTML ラッパーは Flex Builder で自動的に作成されます。コマンドラインコンパイラを使用する場合は、これも手動で作成する必要があります。次のサンプルラッパーを使用できます。
    <html lang="en">
     <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>ReplayExample</title>
     </head>
     <body>
    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
     id="ReplayExample" width="100%" height="100%"
     codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">
     <param name="movie" value="ReplayExample.swf" />
     <param name="quality" value="high" />
     <param name="allowScriptAccess" value="sameDomain" />
     <embed src="ReplayExample.swf" quality="high" 
    width="100%" height="100%" name="applicationReplayExample"
    quality="high"
    allowScriptAccess="sameDomain"
    type="application/x-shockwave-flash"
    pluginspage="http://www.macromedia.com/go/getflashplayer">
     </embed>
    </object>
     </body>
    </html>
    
    
  7. ラッパーとアプリケーションの SWF ファイルを Web サーバーにコピーします。サンプルアプリケーションは Web サーバーにデプロイする必要があります。
  8. autoquick_src.zip ファイルから AutoQuickEnv.xml ファイルを、Web サーバー上にあるサンプルアプリケーションの SWF ファイルおよびラッパーファイルと同じディレクトリにコピーします。

これで AutoQuick ツールバーを使用するアプリケーションが作成できたので、これを使用してイベントの記録や再生を行うことができます。

AutoQuick ツールバーを使用して記録を行う

  1. アプリケーションの SWF ファイルを要求します。例えば、次のようにします。
    http://localhost:8100/replay/default.htm
    
    
  2. アプリケーションが起動し、Button コントロールと Automation ポップアップウィンドウが表示されます。
  3. Automation ポップアップウィンドウの「Record」ボタンをクリックします。
  4. アプリケーションで作成したボタンをクリックします。これでボタンのラベルが「click me」から「clicked」に変わります。
  5. Automation ポップアップウィンドウの「Stop」ボタンをクリックします。Automation ポップアップウィンドウのテキスト領域に、Flex アプリケーションの記録された操作内容が表示されます。
  6. Automation ポップアップウィンドウからテキストをテキストエディタにコピーします。これは次のようになります。
    <Records>
     <Step 
        id="automationClassName{FlexApplication
            string}automationName{ReplayExample string}label{
            string}automationIndex{index:-1 string}id{ReplayExample string}
            className{ReplayExample string}|automationClassName{FlexButton
            string}automationName{click%20me string}label{click%20me
            string}automationIndex{index:0 string}id{b1 string}className
            {mx.controls.Button string}" 
        method="Click">
    <Args value=""/>
     </Step>
    </Records>
    
    

スクリプト全体が <Records> タグで囲まれます。スクリプト内の各イベントは、<Step> タグで表されています。step タグの中では、<Args> 子タグでイベントの引数を説明することができます。例えば、イベントが MouseClick イベントの場合、<Args> 子タグはイベントの際にどのキーが押されたかを定義します。

<Step> タグの id 属性には、イベントの各ターゲットのコントロール階層全体が含まれています。id 属性内の各オブジェクトはパイプ(|)で区切られ、階層の最上位のオブジェクトが最初に表示されます。例えば、HBox コンテナの中に TextInput コントロールがあるアプリケーションの場合、次のような id 属性を持つことになります。

Application | HBox | TextInput

階層内の各オブジェクトは、次のシンタックスを使用する一連のプロパティによって定義します。

property_name{value type}

ReplayExample のサンプルでは、アプリケーションに関する次の情報を確認できます。

automationClassName{FlexApplication string}
automationName{ReplayExample string}
label{string}
automationIndex{index:-1 string}
id{ReplayExample string}
className{ReplayExample string}

また、Button コントロールについては、ラベルを含む次のような情報が表示されます。

automationClassName{FlexButton string}
automationName{click%20me string}
label{click%20me string}
automationIndex{index:0 string}
id{b1 string}
className{mx.controls.Button string}

オブジェクトの定義には、その種類のオブジェクトの AutoQuickEnv.xml ファイルで定義されたすべての属性の値が含まれています。これにより、確実にオブジェクトをスクリプト内で一意に識別することができます。id 属性内のこのエントリは、automationClassName プロパティが FlexButton、automationName がラベル、ラベルが「click me」、automationIndex が 0、id が b1、標準クラス名が mx.controls.Button であるオブジェクトとして Button コントロールを識別します。

<Step> タグの method 属性は、記録されたイベントを定義します。

AutoQuick ツールバーを使用して記録されたセッションを再生する

  1. ブラウザを更新するか、ブラウザを一度閉じてから再度開いて、Flex アプリケーションを再起動します。
  2. 記録されたスクリプトをテキストエディタからコピーして、Automation ポップアップウィンドウのテキスト領域に貼り付けます。
  3. 「Play」ボタンをクリックします。これで Button コントロールのラベルが「click me」から「clicked」に変わります。

AutoQuick サンプルについて

AutoQuick サンプルでは、次のような様々なアセットが使用されています。

  • AQToolBar.mxml ó 記録、停止、および再生の機能を備えた浮動表示ウィンドウを定義します。このコンポーネントはヘルパークラスのメソッドを呼び出します。
  • AQAdapter.as ó AutoQuick のサンプル用のエージェントクラスを定義します。このクラスは mixin であり、アプリケーションの起動時に SystemManager クラスからの静的な init() メソッドの呼び出しをトリガします。
  • AutoQuickEnv.xml ó どのコンポーネントとメソッド、プロパティ、イベントが、オートメーション API で記録可能かを定義します。これは、CustomAgent サンプルで使用される AutomationGenericEnv.xml ファイルに似たものです。
  • codec.* クラスファイル ó コーデックパッケージ内のクラスは、ActionScript 型をエージェント固有の型に変換するために使用されます。これらのクラスは、ActionScript 型の直列化を可能にするものと見なすことができます。例えば、AutoQuick サンプルは DatePropertyDecode クラスを使用して、Date オブジェクトをエンコード済みの形式に変換します。その後、直列化オブジェクトは実行時にエージェントによってロードできます。

AutoQuick サンプルのカスタマイズ

最もよくカスタマイズされるクラスは、AQToolBar.mxml ファイルおよび AQAdapter.as ファイルです。

AQToolBar.mxml ファイルに機能を追加する手順は、その他のカスタム Flex コンポーネントを編集する手順とほぼ同じです。リブランド、サイズ変更、または任意のプロパティの変更などにより、利用中のアプリケーションフレームワークで機能を使用できるようにします。例えば、記録結果のログを作成する PHP ページへの HTTPService 呼び出しを追加できます。こうすると、CustomAgent サンプルに似た Web ベースの再利用可能なイベント記録ツールを作成できます。

また、AQAdapter クラスのカスタマイズも可能です。例えば、記録される内容に情報を追加することができます。<Step> および <Args> のデータは、このクラスの recordHandler() メソッドで定義されます。このクラスはオーバーライドして、パラメータを追加できます。例えば、<Args> の値は現在、数値として表されています。ユーザーが Shift キーを押したまま Button コントロールをクリックした場合、エージェントは <Args value="2"/> を記録します。<Args value="ShiftKey"/> などの人間が判読できる値を含むクラスには、ロジックを追加できます。

AutoQuick サンプルのソースファイルをカスタマイズしたら、SWC ファイルを再構築する必要があります。詳細については、AutoQuick.swc ファイルの構築を参照してください。

AutoQuick.swc ファイルの構築

autoquick_src.zip ファイルには、AutoQuick.swc ファイルの構築に必要なすべてのクラスが含まれています。zip ファイルを最初に解凍するとき、またはソースファイルに変更を加えるときは、独自の SWC ファイルを構築する必要があります。

AutoQuick のソースファイルから独自の AutoQuick.swc ファイルを構築するには、次の compc コマンドでカスタムの SWC ファイルをコンパイルします。

C:\flex\sdk\bin>compc 
    -source-path+=c:/myfiles/flex3/agent/replay/AutoQuick 
    -output c:/myfiles/flex3/agent/replay/AutoQuick.swc 
    -include-classes AQAdapter custom.CustomAutomationClass AQEnvironment 
        custom.CustomAutomationEventDescriptor custom.CustomAutomationMethodDescriptor 
        custom.CustomAutomationPropertyDescriptor custom.utilities.EnvXMLParser 
        IAQCodecHelper IAQMethodDescriptor IAQPropertyDescriptor codec.ArrayPropertyCodec 
        codec.AssetPropertyCodec codec.AutomationObjectPropertyCodec     
codec.ColorPropertyCodec codec.DatePropertyCodec codec.DateRangePropertyCodec
codec.DateScrollDetailPropertyCodec codec.DefaultPropertyCodec codec.HitDataCodec codec.KeyCodePropertyCodec codec.KeyModifierPropertyCodec codec.ListDataObjectCodec codec.ScrollDetailPropertyCodec codec.ScrollDirectionPropertyCodec codec.TabObjectCodec codec.TriggerEventPropertyCodec

具体的なファイルパスは、コンピュータによって異なる場合があります。

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート