オブジェクトの座標を右側から指定する方法について

こんにちは、SmartBear 営業部です。
TestComplete でクリック位置などの座標を指定する際には、対象のオブジェクトの左上を起点として、座標位置を指定します。
そのため、コントロールの任意の個所をクリックさせたい場合、コントロールのサイズが固定であれば問題ありませんが、サイズが変動する場合は座標を用いて任意の個所をクリックさせる動作を正確に再現するのが難しくなります。

例えば、以下のようなグリッドコントロールで、ヘッダーのセルの右側にフィルタボタンが存在する場合、列のサイズが可変するため、やはりフィルタボタンをクリックすることは困難です。

ただし、このようなケースでもコントロールの幅を取得し、右側からの座標位置で、クリック操作を行うことができますので、今回はその方法をご案内します。

■ 設定方法

まず、今回利用するコントロールは、TestComplete でもサポートしている Infragistics 製品の WPF プラットフォームの XamDataGrid です。
サンプルとして提供されているアプリケーションの “レコードのフィルタリング機能を有効にする” を使用して、フィルタボタンのクリック、表示されたチェックボックスの操作を自動記録しています。

この状態で再生すると、グリッド内の “OrderDate” のセルは認識していますが、フィルタボタンの位置までは検出していないため、次の操作が実行できずエラーとなります。
上記の XamDataGrid1 のオペレーションをダブルクリックし、編集していきます。

1.On Screen Action のダイアログで、選択されている XamDataGrid から、LabelpresenterOrderdate に操作対象を変更し、[Next >] ボタンをクリックします。

2. 使用するメソッドは、Click に置き換えます。(右上のテキストボックスで検索ができます。)

3. 次に座標位置の選択ですが、ClientX の Value の右側の参照ボタンをクリックし、Edit Parameter ダイアログを開きます。
ダイアログ内で Mode: は Code Expression を選択し、Value は右側の参照ボタンをクリックして、 次に表示されるダイアログの Select On-screen Object… を選択します。

4. OrderDate のオブジェクトにターゲットマークをドラッグして、コントロールを指定します。

5. 指定したコントロールの情報の後ろに “.Width – 10” を追加します。
※ コントロールの幅を取得し、右からの座標を指定していますので、-10 の数値は任意の数値を用いてください。

6. ClientY については今回は可変が無いものとし、センターをクリックするよう 12 と設定しています。(コントロールの高さが 24 のため)

これで設定は完了です。以下のように列の幅を可変させた場合でもテストは問題なく実行されます。

テストシナリオ修正後の実際の動作は以下の動画でご確認いただけます。

今回の方法はオブジェクト内の座標を指定する際に、他の操作でも応用ができますので、参考にしてください。

なお、Infragistics のグリッドコントロールは今回サンプルとして使用したフィルタ機能以外にも、グループ化や並び替え、ツリー グリッド、ピボット グリッドなど様々な機能を用意していますので、ご覧ください。
Infragistics Ultimate: https://www.xlsoft.com/jp/products/infragistics/index.html

※ 設定後の実行時の動画を追加しました。(2017/6/2)