Excel 拡張子のサンプル: TechnologyManager クラスSample Excel Extension: TechnologyManager Class

このクラスは <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager> クラスを拡張します。また、Microsoft ExcelMicrosoft Excel 拡張機能用のコア サービスを提供する役割があります。This class extends the <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager> class and is responsible for providing core services for the Microsoft ExcelMicrosoft Excel extension. 基底クラスには多くのメソッドがありますが、このサンプルではそのサブセットのみを使用します。Although the base class has many methods, only a subset of them is used in this sample.

一部のメソッドは単にプロパティ値を返します。Some methods just return a property value. 多くのメソッドは、コード化された UI テスト エンジンに組み込まれている既定のアルゴリズムを開発者が上書きできるように用意されています。Many of the methods are intended to allow the developer to override default algorithms build into the coded UI test engine. これらのメソッドは、NotSupportedException をスローするか、null を返して、既定のアルゴリズムを使用するようフレームワークに指示します。These methods throw a NotSupportedException or return null, which tells the framework to use the default algorithm.

基になるテクノロジの複雑さに応じて、テクノロジ マネージャー コードの開発には数週間から数か月かかる場合があります。Depending on the complexity of the underlying technology, developing the technology manager code could take from a few weeks to a few months. Excel を使用すると、非常に広範なテクノロジ マネージャーを作成することが可能になります。Excel provides an opportunity to create a potentially very extensive technology manager. この例では、意図的に Excel のワークシートとセルだけに限定し、使用する書式設定も制限しています。This example is intentionally limited to Excel worksheets and cells and uses limited formatting.

可能であれば、テクノロジ マネージャー コードは Communicator クラスによって開かれた .NET リモート処理チャネルを使用し、Excel プロセスで実行されているアドインから情報を抽出します。When it is possible, the technology manager code uses the .NET Remoting channel opened by the Communicator class to extract information from the Add-In running in the Excel process.

COM の参照範囲COM Visibility

このクラスと、<xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyElement> クラスを拡張する各要素クラスにはいずれも値が trueComVisibleAttribute があるため、COM からクラスを参照できます。Notice that this class and each of the element classes that extend the <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyElement> class all have the ComVisibleAttribute with a value of true to make sure the classes are visible to COM.

TechnologyName プロパティTechnologyName Property

<xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager.TechnologyName%2A?displayProperty=fullName> プロパティのこのオーバーライドでは、拡張機能の他のコンポーネントについて基礎となるテクノロジを識別できる一意でわかりやすい名前を指定する必要があります。This override of the <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager.TechnologyName%2A?displayProperty=fullName> property must provide a unique and meaningful name that identifies the underlying technology for every other component of the extension. この拡張機能では、値は "Excel" です。For this extension, the value is "Excel".

GetControlSupportLevel メソッドGetControlSupportLevel Method

<xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager.GetControlSupportLevel%2A?displayProperty=fullName> メソッドのこのオーバーライドは、指定されたハンドルで表されているコントロールにテクノロジ マネージャーが提供できるサポートのレベルを示す数値を返します。This override of the <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager.GetControlSupportLevel%2A?displayProperty=fullName> method returns a number that indicates the level of support that the technology manager can offer for the control represented by the provided handle. 戻り値が大きくなるほど、コントロールに対するテクノロジ マネージャーのサポート レベルは高くなります。The higher the returned value, the more the technology manager can support the control. この場合、メソッドはコントロールが含まれているウィンドウを確認し、それが Excel ワークシートであれば、最も高い値を返します。それ以外の場合はゼロが返され、サポートされないことを表します。In this case, the method checks the window that contains the control and if it is an Excel Worksheet, the method returns the highest value; otherwise, it returns zero, which indicates that no support is provided.

要素を取得するメソッドMethods to Get an Element

テクノロジに固有の要素を取得するために、コード化された UI テスト フレームワークによって使用される、いくつかの重要なメソッドがあります。要素を取得するには、ハンドル、画面上のポイント、または別のテクノロジの要素を指定します。There are several important methods that are used by the coded UI testing framework to get an element specific to the technology by providing a handle, a point on the screen, or an element from a different technology. これらのメソッドのコードは、自己記述的です。The code for these methods are self-explanatory. 基本メソッドは次のとおりです。The base methods are as follows:

  • <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager.GetFocusedElement%2A?displayProperty=fullName>

  • <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager.GetElementFromPoint%2A?displayProperty=fullName>

  • <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager.GetElementFromWindowHandle%2A?displayProperty=fullName>

  • <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager.GetElementFromNativeElement%2A?displayProperty=fullName>

  • <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager.ConvertToThisTechnology%2A?displayProperty=fullName>

ParseQueryId メソッドParseQueryId Method

コード化された UI テストの作成時に、ユーザーはテストの一部またはすべてのコントロールのプロパティ値を指定できます。When a coded UI test is created, the user can specify property values for some or all the controls in the test. これらのプロパティ値は、テスト フレームワークによって、検索プロパティ (テスト中に特定の UI コントロールを見つけるために使用される、名前と値の組) を作成するために使用されます。These property values are used by the testing framework to create name-value pairs called search properties that are used to find specific UI controls during the test. すべての検索プロパティは、各コントロールを含め、テクノロジ内の各要素の <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyElement.QueryId%2A?displayProperty=fullName> プロパティの値を表しています。All the search properties together represent the value of the <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyElement.QueryId%2A?displayProperty=fullName> property of every element in the technology, which includes every control. テストの実行中にコントロールを数回検索しなければならない場合があるため、このメソッドはテクノロジ マネージャーによる特定のコントロールの検索プロパティの解析を最適化できるようにします。Because a control might have to be found several times during a test, this method gives the technology manager a way to optimize parsing of search properties for the given control. またこのメソッドは、フレームワークがそのコントロールを後で検索するときに使用できるクッキーも返します。This method also returns a cookie that the framework can use for subsequent searches for that control. メソッドのこの実装では、<xref:Microsoft.VisualStudio.TestTools.UITest.Extension.AndCondition.Match%2A?displayProperty=fullName> メソッドを使用して検索プロパティを解析します。This implementation of the method uses the <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.AndCondition.Match%2A?displayProperty=fullName> method to parse the search properties.

MatchElement メソッドMatchElement Method

テクノロジ マネージャーでコントロール検索を実行するには、<xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager.Search%2A?displayProperty=fullName> メソッドを実装して、一致する候補の配列を返すか、NotSupportedException をスローすることができます。この場合、フレームワークが独自の検索アルゴリズムを使用していることがわかります。To perform a control search by the technology manager, you can implement the <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager.Search%2A?displayProperty=fullName> method to either return an array of possible matches, or throw the NotSupportedException, which tells the framework to use its own search algorithm. いずれの方法でも、この実装が <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.AndCondition.Match%2A?displayProperty=fullName> メソッドを使用する場所に <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager.MatchElement%2A> メソッドを実装する必要があります。Either way, you must implement the <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager.MatchElement%2A> method where this implementation again uses the <xref:Microsoft.VisualStudio.TestTools.UITest.Extension.AndCondition.Match%2A?displayProperty=fullName> method.

これらのメソッドは、指定された要素の親、子、兄弟などを UI 階層から取得します。These methods get the parent, children, or siblings of the provided element from the UI hierarchy. コードは単純で、わかりやすいコメントが付けられています。The code is simple and clearly commented.

GetExcelElement 内部メソッドGetExcelElement Internal Method

この内部メソッドは、ウィンドウ ハンドルと Excel 要素についての情報を受け取り、要求された Excel 要素を返します。This internal method takes a window handle and information about an Excel element, and returns the requested Excel element.

関連項目See Also

<xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager><xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyManager>
NotSupportedExceptionNotSupportedException
<xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyElement><xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyElement>
ComVisibleAttributeComVisibleAttribute
<xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyElement.QueryId%2A><xref:Microsoft.VisualStudio.TestTools.UITest.Extension.UITechnologyElement.QueryId%2A>
コード化された UI テストと操作の記録を拡張して Microsoft Excel をサポートExtending Coded UI Tests and Action Recordings to Support Microsoft Excel