automationName プロパティは、テストに表示されるコンポーネント名を定義します。このプロパティのデフォルト値は、コンポーネントの種類に応じて異なります。たとえば、Button コントロールの automationName は、Button コントロールのラベルです。automationName がコントロールの id プロパティと同じ場合もありますが、常に同じであるわけではありません。
一部のコンポーネントでは、automationName プロパティの値は、Flex によってそのコンポーネントを認識しやすい属性に設定されています。これにより、テスト担当者は、テストでコンポーネントを認識しやすくなります。通常、テスト担当者は、アプリケーションの基になるソース コードにアクセスできないため、コントロールの表示されるプロパティによってそのコントロールを認識できるようにすることは有用です。たとえば、「Process Form Now」というラベルが設定された Button は、テストで FlexButton("Process Form Now") と表示されます。
新しいコンポーネントを実装する場合や、既存のコンポーネントから派生する場合は、automationName プロパティのデフォルト値をオーバーライドできます。たとえば、UIComponent では、automationName の値は、デフォルトでコンポーネントの id プロパティに設定されます。ただし、一部のコンポーネントでは、独自の方法を使用して値が設定されます。たとえば、Flex Store サンプル アプリケーションでは、コンテナを使用して製品のサムネイルが作成されています。コンテナのデフォルトの automationName はコンテナの id プロパティと同じ値となるため、あまり役立ちません。そのため、Flex Store では、製品のサムネイルを生成するカスタム コンポーネントで明示的に automationName を製品名に設定して、アプリケーションをテストしやすくしています。
以下の CatalogPanel.mxml カスタム コンポーネントの例では、automationName プロパティの値をカタログに表示される項目名に設定しています。これにより、デフォルトのオートメーション名を使用するよりもサムネイルを認識しやすくなります。
thumbs[i].automationName = catalog[i].name;
<?xml version="1.0"?> <!-- at/SimpleComboBox.mxml --> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[ [Bindable] public var cards: Array = [ {label:"Visa", data:1}, {label:"MasterCard", data:2}, {label:"American Express", data:3} ]; [Bindable] public var selectedItem:Object; ] ]> </mx:Script> <mx:Panel title="ComboBox Control Example"> <mx:ComboBox id="cb1" dataProvider="{cards}" width="150" close="selectedItem=ComboBox(event.target).selectedItem" automationName="Credit Card List" /> <mx:VBox width="250"> <mx:Text width="200" color="blue" text="Select a type of credit card." /> <mx:Label text="You selected: {selectedItem.label}"/> <mx:Label text="Data: {selectedItem.data}"/> </mx:VBox> </mx:Panel> </mx:Application>
automationName プロパティの値を設定すると、オブジェクト名が実行時に変更されないことが保証されます。このことは、予期しない結果の回避に役立ちます。
automationName プロパティの値を設定すると、テストでは、デフォルト値ではなく、その値が使用されます。たとえば、Silk4J では、デフォルトで、スクリプトにおいて Button コントロールの label プロパティがボタンの名前として使用されます。この場合、ラベルが変更されると、スクリプトが動作しなくなります。automationName プロパティの値を明示的に設定することによって、このような事態を回避できます。
ラベルがなく、アイコンがあるボタンは、インデックス番号によって記録されます。この場合は、automationName プロパティをわかりやすい文字列に設定して、テスト担当者がスクリプトでボタンを認識できるようにします。automationName プロパティの値を設定したあとは、コンポーネントのライフ サイクル全体を通して値を変更しないでください。項目レンダラでは、automationName プロパティではなく automationValue プロパティを使用します。automationValue プロパティを使用するには、createAutomationIDPart() メソッドをオーバーライドして、automationName プロパティに割り当てる新しい値を返します。以下に例を示します。
<mx:List xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> import mx.automation.IAutomationObject; override public function createAutomationIDPart(item:IAutomationObject):Object { var id:Object = super.createAutomationIDPart(item); id["automationName"] = id["automationIndex"]; return id; } </mx:Script> </mx:List>
このテクニックを使用して、任意のコンテナまたはリスト形式コントロールの子にインデックス値を追加します。子が自分自身のインデックスを指定する方法はありません。