「親スクリーンが見つかりません」と表示される

PowerAutomateDesktop

UI要素のテストで「親スクリーンが見つかりません」と表示されるときの対処法について、説明していきます。

Power Automate Desktop(PAD)でUI要素をテストしていると、「親スクリーンが見つかりません」と表示されることがあります。

この記事では、「親スクリーンが見つかりません」と表示されたときに確認したいポイントと、親スクリーンの設定を変更する方法を説明します。

PADのUI要素は、単独で存在しているわけではありません。

例えば、メモ帳の「閉じる」ボタンをUI要素として取得した場合、「閉じる」ボタンだけではなく、そのボタンが存在しているメモ帳のウィンドウも親となる要素として扱われます。

つまり、親スクリーンとは、UI要素が属しているウィンドウのことを指します。
UI要素ペインで説明すると、下図の破線部分が親スクリーンです。

「親スクリーンが見つからない」は、以下の場合に表示されます。

  • テストの時に指定しているUI要素が、画面に表示されていない
  • 親スクリーンの指定方法が適切ではない

UI要素が表示されていない場合は、UI要素を表示させることで解決します。
ここでは「親スクリーンの指定方法が適切ではない」場合の対処法を説明します。

1.スクリーンセレクターを表示させる

「親スクリーンが見つかりません」と表示されたUI要素の編集画面で、「スクリーンセレクターを開く」をクリックします。

UI要素の編集画面と同じように、親スクリーンの編集画面が起動します。

2.「Name」の値を変更する

親スクリーンのセレクターで、まず確認したいのが「Name」です。
指定方法が適切でない場合は、属性「Name」を変更すれば解決することが多いです。


「Name」には、ファイルやウィンドウタブの名前など、固有名称が設定されています。

例えば、エクスプローラーで「ダウンロード」フォルダーを開いた状態でUI要素を取得した場合、親スクリーンのNameにそのときのウィンドウ名が設定されることがあります。

その後、「ドキュメント」フォルダーを開いた状態で同じUI要素を使用すると、ウィンドウのNameが異なるため、親スクリーンを見つけられなくなる可能性があります。

つまり、UI要素を取得した時と同じ名称のウィンドウを開いていないと、親スクリーンを発見できずに「見つかりません。」というエラーが発生します。

下図は、どちらもエクスプローラーで取得した「閉じる」ボタンのスクリーンセレクターです。
フォルダが異なっていても「閉じる」ボタンのUI要素は同じになりますが、表示しているフォルダによって「Name」の値がちがうことが分かります。

「閉じる」ボタンのUI要素
デスクトップフォルダを開いた状態でUI要素を取得した場合
ダウンロードフォルダを開いた状態でUI要素を取得した場合

親スクリーンの「Name」が指定されることで、UI要素取得時のウィンドウ以外はエラーとなってしまいますが、以下のように変更すれば解決します。

Nameによる指定が不要な場合は、Nameのチェックを外してみます。

ほかの属性によってウィンドウを正しく特定できるのであれば、変化しやすいNameを条件から外すことで、UI要素を見つけやすくなる場合があります。

ただし、Nameを外せば必ず良いというわけではありません。

同じアプリケーションのウィンドウが複数開いている場合、条件が緩くなりすぎると、意図していないウィンドウを選択する可能性があります。

そのため、エラーを解消するだけでなく、フローを実行したときに正しいウィンドウを特定できるかも確認することが重要です。

演算子を完全一致で指定するのではなく、「含む」に変更する方法もあります。

例えば、ウィンドウ名が

「rakudon.txt – メモ帳」

のように、ファイル名とアプリケーション名を組み合わせたものになっている場合、ファイル名の部分は開くファイルによって変わります。

このような場合は、Nameの値を「メモ帳」にして、演算子を「含む」にすると、ファイル名が変わってもメモ帳のウィンドウとして認識しやすくなります。

ただし、「含む」にすると対象が広くなる点には注意してください。

同じアプリケーションを複数起動している場合は、条件が一致するウィンドウが複数存在する可能性があります。

値を変更した場合は、演算子も変更しないとエラーになるので注意してください。

演算子を「等しい」→「含む」、値を「rakudon.txt – メモ帳」→「メモ帳」に変更

親スクリーンを変更するタイミング

親スクリーンを変更する場合は、できるだけフローの作成がある程度終わってから行うことをおすすめします。

PADではUI要素が親スクリーンとの関係を持っているため、親スクリーンを変更すると、同じウィンドウから取得したUI要素であっても別の親スクリーンとして扱われる場合があります。

その結果、UI要素が増えてしまい、同じような修正を何度も行うことになる可能性があります。

最初からセレクターを必要以上に厳しく設定するのではなく、まずフローを作成し、実際に実行したときに問題になる部分を調整するほうが管理しやすくなります。

WebブラウザのUI要素をデスクトップUIとして取得している場合

Webブラウザーを操作している場合は、UI要素をどの方法で取得したのかも確認してください。

PADでは、Webページの操作にはWeb UI要素とブラウザー自動化アクションを使用できる一方、ブラウザーのアドレスバーやタブなど、Webページそのものではない部分にはデスクトップUI要素を使用します。

ブラウザーをデスクトップUIとして取得している場合、開いているタブ数などによってウィンドウのNameが変化することがあります。

実際にフローを実行する環境と同じタブ数でUI要素を取得するか、「Name」の値を変更することでエラーを回避しましょう。

また、Webページの操作をしているのであれば、デスクトップUI要素ではなく、ブラウザー自動化で取得したWeb UI要素を使用できないか確認してみましょう。

同一アプリを複数起動する場合

同じアプリケーションを複数起動する場合は、Nameの条件を緩くしすぎないようにします。

例えば、メモ帳を2つ開いている状態で、Nameに「メモ帳」のみを指定すると、どちらのウィンドウを対象にするのか判断できなくなる可能性があります。

ファイル名などによって対象を区別できる場合は、変数を利用して対象を切り替える方法もあります。

特にループ処理で複数のファイルを順番に処理するフローでは、ウィンドウ名が毎回変わることがあるため、固定値だけで指定するとエラーの原因になります。

アプリケーションの更新に注意

今まで問題なく動作していたフローで、突然「親スクリーンが見つかりません」と表示された場合は、アプリケーション側の変更も確認してみましょう。

アプリケーションの更新によってウィンドウタイトルなどが変わると、以前取得したUI要素のセレクターと一致しなくなる場合があります。

また、ブラウザーの場合は、ブラウザーの更新やタブの状態によってUI要素の構造が変化することもあります。

エラーが発生したときは、単純にUI要素を取り直すだけではなく、現在のセレクターと実際のウィンドウの状態を比較すると原因を見つけやすくなります。

「Name」はタスクバーでポップアップが表示された時の上にあるタイトルと大体同じです。

タイトルとURLをコピーしました