JobAutoの要素マッチングでタイプに「//」を使う方法

★質問・概要

Q.JobAutoのアプリ操作で要素マッチングを使うと、「要素が見つからない」というエラーが発生します。高度な設定の「タイプ」に「//」を使って指定する方法を教えてください。

★回答

要素マッチングで対象を安定して認識できない場合は、アクションの高度な設定にある「タイプ」の指定を見直します。この記事では、元のタイプ指定を//MenuItemのような指定へ変更する例を紹介します。

指定を変更すると複数の要素が見つかることがあります。その場合は「要素インデックス」を調整し、最後に「操作対象にフォーカス」で目的の操作箇所を正しく認識しているか確認してください。

「//」を使った指定は、すべてのアプリや要素で必ず有効とは限りません。対象の要素が見つかるか、意図した場所を操作できるかを実行環境で確認してください。

1.要素マッチングで「ファイル」を操作する例

アプリ操作の要素マッチングで、操作対象が見つからないエラーが繰り返し発生する場合の設定例です。以下のアプリ画面の「ファイル」をクリックするアクションを想定しています。

アプリ画面で操作対象となる「ファイル」メニュー

2.マッチング方式を「要素」にする

アプリデザインでマッチング方式に「要素」を選択し、操作したい箇所を指定します。次の画像は、アプリデザインでマッチング方式を選択する画面です。

アプリデザインのマッチング方式で「要素」を選択

3.高度な設定で「タイプ」を調整する

3-1.タイプの指定に「//」を使う

アクションの高度な設定で「タイプ」を確認し、下の画像のように指定を変更します。

変更前の例は /Window[1]/Pane[1]/ToolBar[1]/MenuItem[1] です。変更後の例では //MenuItem を設定しています。途中の階層まで指定した状態から、MenuItem の要素を探す指定に変更する例です。アプリ画面の構造が変化して従来のタイプで見つからない場合に、この方法で認識できることがあります。

変更前のタイプ設定:/Window[1]/Pane[1]/ToolBar[1]/MenuItem[1]
変更前
変更後のタイプ設定://MenuItem
変更後

「タイプ」はアプリの要素を特定する設定項目です。この例の //MenuItem はJobAutoのアプリ操作で使用するタイプ指定の例であり、ブラウザ操作のXPathの指定方法を説明したものではありません。また、すべてのアプリで同じ指定が使用できるとは限りません。

3-2.複数の要素が見つかる場合は要素インデックスを変更する

タイプに「//」を使った指定をすると、同じ条件に一致する要素が複数見つかる場合があります。この場合は、「要素インデックス」を変更して操作する要素を指定します。

要素インデックスは0から始まります。1番目の要素が「0」、2番目の要素が「1」です。画面構成が変わると要素の並び順も変わる場合があるため、インデックスだけに頼らず、「名前」などの条件で対象を絞り込めないか確認してください。

タイプを//MenuItemにした場合の要素インデックス設定画面

3-3.「操作対象にフォーカス」で目的の要素か確認する

要素が見つかったら、「操作対象にフォーカス」をクリックします。操作したい「ファイル」メニューにフォーカスが当たることを確認してください。

アプリデザインの「操作対象にフォーカス」ボタン

要素が見つかったという結果だけで判断せず、実際に操作したい箇所が選ばれているか確認することが大切です。別の箇所へフォーカスが当たる場合は、要素インデックスや名前などの設定を見直します。操作画面を変更した場合は、アプリデザインの「画像を読込み」で現在の画面を取得してから再確認してください。

3-4.画面切り替え後に要素を見失う場合

同じ設定でも、アプリ画面が変わったあとに要素を見つけられなくなる場合があります。要素の情報を保持したままになっていないか確認し、必要に応じて高度な設定の「キャッシュクリア」を使用します。画面の表示に時間がかかる場合は、「要素が見つかるまでのタイムアウト」も確認してください。

キャッシュクリアやタイムアウトを変更しても、タイプの指定が誤っていたり、操作するウィンドウが異なっていたりする場合は解決しません。原因を一つずつ切り分けてください。

4.通常のタイプ指定や正規表現との違い

タイプの指定には、階層情報を含む指定、// を使う指定、タイプの一部を正規表現で指定する方法があります。以下は、それぞれの記事で紹介している設定例です。

指定方法設定例確認のポイント
階層を含むタイプ指定/Window[1]/Pane[1]/ToolBar[1]/MenuItem[1]アプリ画面の構造が変わると、設定した階層と一致しない場合があります。
// を使う指定//MenuItem途中の階層を省略した指定例です。複数の要素が見つかった場合は、インデックスや名前を確認します。
タイプの一部を正規表現で指定/Pane/Pane/Pane/.*タイプの一部が変化する場合などに使用する設定例です。タイプに正規表現を使う方法を参照してください。

この表は設定例の比較です。// の内部的な検索規則や適用範囲を示すものではありません。設定を変更したあとは、見つかった要素の件数と「操作対象にフォーカス」の結果で動作を確認してください。

5.設定変更後の確認順序

  1. タイプの設定を //MenuItem のように変更します。
  2. 設定した条件で操作対象の要素が見つかるか確認します。
  3. 複数の要素が見つかる場合は、要素インデックスを調整します。
  4. 「操作対象にフォーカス」で、目的の操作箇所を認識しているか確認します。
  5. 実際にアクションをテストし、意図した要素が操作されるか確認します。スケジュール実行を予定している場合は、実行PCでも確認します。

6.タイプだけでは要素を絞り込めない場合

タイプだけでは操作対象を1つに絞り込めない場合は、「名前」などほかの要素特定条件も確認します。名前が処理のたびに変化する場合は、JobAutoの要素マッチングを安定させる方法|名前に正規表現を使うも参考にしてください。

また、タイプの一部が変化する場合などは、JobAutoの要素マッチングでタイプに正規表現を使う方法を確認してください。「//」を使う方法と、タイプの一部を正規表現で指定する方法は別の設定例です。

そもそもアプリデザインで操作したい箇所を選択できない場合は、JobAutoでアプリの操作箇所を選択できない場合の対処方法を確認してください。接続先一覧の更新やアプリデザインの画面再読み込みなどを説明しています。

要素が見つからない場合は、アプリが正しく接続されているか、現在の画面が表示されているか、対象となる要素が読み込まれているかも確認してください。詳しい設定項目は正式マニュアルをご覧ください。


関連するマニュアル・FAQ

JobAutoのFAQ記事一覧へ戻る

5件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください。