Flex アプリケーションでのユーザー操作の記録と再生を行うカスタムエージェントを作成できます。このプロセスは、単にメトリックのログを行う目的でユーザー操作を記録するよりもはるかに複雑です。
このカスタムエージェントは、異なる環境情報を使用するエージェント(Flex のオートメーション機能に含まれる QTP エージェントなど)と一緒には使用できません。そのため、このエージェントを使用する場合は、QTP を使用してスクリプトを記録および再生することは避けてください。
この AutoQuick サンプルは、http://www.adobe.com/go/flex_automation_agent_apps で別途ダウンロードできます(autoquick_src.zip ファイル)。
カスタムの再生エージェントを記述する前に、AutoQuick サンプルを試してみてください。そうすれば、エージェントがユーザー操作を再生するためにどのような情報を記録する必要があるかを理解することができます。
AutoQuick サンプルを使用すると、XML ファイルでコーデックを指定して、値の変換に使用できるコーデックのマップを作成する方法を体験できます。
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 ファイルをパスに追加することができます。
<?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>
<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>
これで AutoQuick ツールバーを使用するアプリケーションが作成できたので、これを使用してイベントの記録や再生を行うことができます。
http://localhost:8100/replay/default.htm
<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 ツールバーを使用して記録されたセッションを再生する
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_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
具体的なファイルパスは、コンピュータによって異なる場合があります。
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート