質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

解決済

UIAutomation で タブの内側の要素が取れない

lazex
lazex

総合スコア604

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

2回答

0リアクション

0クリップ

9565閲覧

投稿2016/10/29 12:35

C# で UI Automation を使って、 あるアプリケーションを操作しています。
ボタンを押したり、テキストボックスへの入力など基本的なことは問題なくできています。

しかし、タブコントロールの内側の要素を取得だけができず困っています。
Inspect や UIA Verify で確認してもタブコントロールのヘッダ部分(クリックすると選択してるタブが切り替わるボタンみたいなところ)はあるのですが内側の本体が表示されていません。

ググってみると TabItem の中に Pane があって中身の要素がありそうです。
https://msdn.microsoft.com/en-us/library/ms751611(v=vs.110).aspx

また、.net4.5でコンパイルするとタブのペインが見れなくなった のようなことを書いたページもありました。
http://stackoverflow.com/questions/25617731/white-ui-automation-doesnt-recognize-the-container-pane-control-in-tab

UI Automation 自体の情報は少なくはなく、タブはよく使われるものだと思うのでタブ内の要素が見れないとなれば重大な問題でもっと情報があるように思うのですが、実際はほとんど情報がないです。

今のところ、タブ内の要素を指定するために座標指定でクリックアクションを起こしたり、タブキーを数回 SendKey で入力してフォーカス要素を取得するようにしています。
UIAutomation はテストにも使われるツールのようなので、デザインが変わる度に大きく変更が必要になる、座標指定やタブキーを押した数で目的の要素を取得するのが正しい使い方とは思えないのです。

どうにかしてタブの内側のツリーから要素を取得できないのでしょうか?

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。