1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VALTES Advent Calendar 2024

Day 16

[T-DASH] Windows アプリのXPath取得をもっと簡単に!

Posted at

はじめに

T-DASHではWebアプリ、Windowsアプリ、モバイルアプリをひとつのプラットフォームでテスト自動化できます。
テスト自動化を進める上で、UI要素を正確に特定するためのXPath取得は欠かせない工程です。
しかし、多くの人が以下のような課題を抱えています。

  • 要素の階層が深く、XPathを手動で記述するのが大変
  • 動的に生成される要素に対応できない

こうした課題を解決するために、T-DASHで採用しているFlaUIでのXPath取得方法を紹介します。

対象環境

T-DASHでは以下の環境をサポートしています。

  • サポートするフレームワーク

    • Win32
    • WinForms
    • WPF
  • 主な技術

    • FlaUI

XPath指定方法

  • UI要素特定

FlaUIではXPathに以下のようなプロパティを活用します。

プロパティ名 内容
ControlType UI要素の種類を表します(例: ボタン、テキストボックス、リストなど)。
ControlIndex 同じ種類のコントロールが複数存在する場合のインデックス番号です。
特定の要素を一意に識別するために使用します。
AutomationId 開発者が設定する一意の識別子で、最も安定した要素特定に使用されます。
ただし、全ての要素に設定されているわけではなく、動的に生成される場合もあります。
Name UI要素の表示名やラベルを表します。
特定の要素を識別する際に便利ですが、同じ名前を持つ要素が複数存在する場合もあります。
ClassName 要素のクラス名を示します。カスタムコントロールや独自に定義されたUI要素を特定する際に役立ちます。
HelpText UI要素に関連付けられた補助テキスト(例: ツールチップやアクセシビリティの説明)。操作ガイドや詳細情報の確認に利用できます。

プロパティを活用して、動的要素や階層が深い要素を簡単に特定できます。

T-DASHではWinツール画面の以下の部分でプロパティを確認できます。

image.png

  • 特定の要素に柔軟に対応する方法

例えば、以下のようなWindowsアプリ画面のRightClickボタンをXPathで指定する場合

image.png

要素のツリー構造としては以下になっています。

image.png
image.png

この場合、XPathのフルパスとしては以下のように記述できます。

/Window/Tab/TabItem/Button

このXPathをいくつかの条件を組み合わせて作成します。

1. ボタンのIndexを指定する

ControlIndexを利用して、特定のインデックスを指定できます。例えば、Button[3] と指定すると、3番目のボタンを特定します。

/Window/Tab/TabItem/Button[3]

ControlIndexを利用して、Winツール上で1/1になっているか確認できます。

image.png

2. プロパティを組み合わせてand条件で組み合わせて指定する

XPathでandを使用して、複数の条件を組み合わせることができます。例えば、NameClassNameの両方を条件に指定することができます。

/Window/Tab/TabItem/Button[@Name='RightClick' and @ClassName='Button']

image.png

3. //を利用して、階層内の子要素どこかにある要素を指定する

//を使うことで、指定した要素がどの階層にあっても検索することができます。これにより、深い階層の要素を特定できます。

/Window//Button[@Name='RightClick' and @ClassName='Button']

image.png

4. *を利用する

*を使うことで、ControlTypeを指定せずに、任意のコントロールタイプを対象にできます。これにより、ControlTypeが動的に変わる要素にも対応することができます。

/Window//*[@Name='RightClick' and @ClassName='Button']

この方法で、ControlTypeを特定せず、NameClassNameのみで要素を特定することができます。

最後に

FlaUIでは、WebのXPathのようにUI要素を特定することができますが、動的な要素や深い階層の要素を取り扱う際に、プロパティを活用することでより柔軟かつ安定したテスト自動化を実現できます。
T-DASHでWindowsアプリ自動化を行う際にXPathで悩まれている方の参考になれば幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?