エラーメッセージ"timeout waitForSelector~"

Coopelで表示されるエラーメッセージと対処方法をご案内します。

 

エラーメッセージ

"timeout waitForSelector
指定された要素が見つかりませんでした。要素(css selector)の指定が正しいか確認して下さい。"

「クリック」、「画面から情報を取得」などのアクションで指定した要素を見つけられなかった場合、上記のようなタイムアウトエラーとなります。

考えられる主な原因

(1) 画面のロードが完了していない

(2) 意図した画面ではなく、別の画面が表示されている

(3) 操作したい部分の要素に iframe が使われているが Coopel上で iframe の設定がされていないために指定した要素を見つける事ができない

(4) ウェブサイト上で操作対象部分の構成やレイアウトが変化しており、要素も変化している

(5) HTML上で要素を特定するための"id"がアクセス毎に変化するウェブサイトであるため、以前指定した ID で要素を見つける事ができない

(6) React を使用して構築されている又は ShadowDOM が使用されている

 

対処方法

(1) の場合

  • timeout waitForSelector エラーが発生するアクション直前に[任意の時間処理を待機]アクションを配置し、画面ロード完了までの時間に猶予を設けるスクリーンショット 2025-08-29 120436.png
  • 設定項目内にある「要素検索のタイムアウト」を長くすることで画面ロード完了までの時間に猶予を設ける

 

(2) の場合

  • シナリオ実行後、timeout waitForSelector エラーが発生したアクションをクリックし、「実行後 」の"ブラウザ"右側に表示された画面キャプチャにて、どのような画面でそのアクションが実行されたか確認する

(3) の場合

  • 要素が iframe 内に存在する場合には、「フレームを指定」にてフレーム要素を指定する必要があります。

iframe.png

具体的な指定方法につきましては、下記のドキュメントをご参照ください

iframeを含んでいる際の要素指定方法

iframeを含んでいる際の要素指定方法(動画)

 

(4) の場合

  • 操作対象部分の構成やレイアウトが変化しており、要素も変化している場合や、Coopel Selector Helper で正しく要素を取得できないような場合には、Chrome の Developer Tools を使用して要素を取得し指定する方法がございます。具体的な指定方法につきましては、下記のドキュメントをご参照ください。

Chrome Developer Tools(デベロッパーツール)の使い方

Chrome Developer Tools(デベロッパーツール)の使い方(動画)

 

(5) の場合

  • 要素のID がアクセスするたびに変化するようなサイトの場合には、要素の full XPath をセレクター形式に変換して要素を指定する方法があります。具体的な指定方法につきましては、下記のドキュメントをご参照ください。

HTML上での"id"がアクセス毎に変化するときの要素指定方法

 

(4) や (5) は目視では確認しづらく、複数の要素指定方法で取得した要素を設定しておくとエラーが減少する場合があります。

実行時にブラウザの画面を表示して画面遷移を確認するなどして安定的に動作する要素を設定してください。

 

(6) の場合

  • React を使用して構築されている場合や ShadowDOM が使用されている場合、[クリック][文字を検索してクリック]等の従来のアクションでは要素にアクセスできません。
    下記の手順でこのケースに該当するかをご確認ください。
    1.対象ページ上で操作したい要素を右クリックし、表示されたメニューから「検証」を選択します。
    すると、デベロッパーツールが開き、Elementsタブ上で要素を示す箇所がハイライトされます。
    2.ハイライトされた要素上で右クリックし、[Copy] > [Copy JS path] を選択します。

    3.取得したJS pathをメモ帳などにペーストし、shadowRoot という文字を含んでいるかを確認します。
    shadowRoot を含んでいる場合、続けて4をご設定ください。4.シナリオでエラーとなっているアクションに替えて『webページ内でJavascriptを実行』アクションを追加します。
    「実行コード」には3でコピーした JS path をペーストし、末尾に .click(); と追記します。

 

 

コメント

0件のコメント

サインインしてコメントを残してください。