--- title: "動的データを含む要素の安定したテスト方法 | Autify Guide" slug: "how-to-grab-an-element-with-dynamic-data" description: "動的なデータを含む要素のテストを安定させる方法について学びましょう。" updated: 2023-01-16T08:31:08Z published: 2023-01-16T08:31:08Z canonical: "help.autify.com/how-to-grab-an-element-with-dynamic-data" --- > ## Documentation Index > Fetch the complete documentation index at: https://help.autify.com/llms.txt > Use this file to discover all available pages before exploring further. # 要素が動的なデータを含む場合、どうすればテストを安定させられますか? ターゲット要素に、シナリオ記録時と異なるデータ/テキストがある場合の、「対象要素が見つかりませんでした」エラーのトラブルシューティングガイドです。 このページでは、動的なデータに対してテストの実行を安定させる方法を紹介します。 ## 原因 テスト実行時、テスト実行エンジンは要素の内部のテキストを見て、その要素が記録されたものと同じかどうかを確認します。 要素の同一性は、その中のテキストやデータだけで決まるわけではありませんが、日付、名前、メールアドレスなどの動的なデータは、「対象要素が見つかりませんでした」エラーを引き起こす可能性があります。 ## 解決方法 ### 1. CSSセレクターを使用する CSSのセレクターを使用するのが、最も手っ取り早い対処法です。 例を見てみましょう。 下のスクリーンショットでは、最新記事がページの上半分に表示されているのがわかります。新しい記事が作成されると、タイトル、日付、著者が変わり、古い記事はページの下半分にあるカードのようなリストに移動されます。 ![newest-title](https://cdn.document360.io/a099d8a2-cfd2-42ca-9906-68b4a337f4a5/Images/Documentation/newest-title.png?sv=2026-02-06&spr=https&st=2026-11-15T01%3A12%3A23Z&se=2026-11-15T02%3A12%3A23Z&sr=c&sp=r&sig=UGWVFsLFaT76QqEL6rXs9qb4ARwClu4tFN2k%2Fo5li7w%3D) 最新記事のタイトルがクリックされたことを確認するために、このように指定します。 ``` div.LatestPost h1 ``` ![dynamic-data-css-selector-example](https://cdn.document360.io/a099d8a2-cfd2-42ca-9906-68b4a337f4a5/Images/Documentation/dynamic-data-css-selector-example.png?sv=2026-02-06&spr=https&st=2026-11-15T01%3A12%3A23Z&se=2026-11-15T02%3A12%3A23Z&sr=c&sp=r&sig=UGWVFsLFaT76QqEL6rXs9qb4ARwClu4tFN2k%2Fo5li7w%3D) (CSSのセレクターの基本を学ぶには、[CSSセレクターを使いこなす](/v1/docs/ja/how-to-use-css-selectors-effec)をご覧ください。) ## 2. ウェブサイトの構造を更新する テスト実行エンジンは、HTMLの情報を使って要素を識別しています。 各要素をよりユニークにすることで、テストをより安定させることができます。 最も一般的な修正は、`span`, `div` などの汎用的な要素を、より意味のあるもの(専門用語で「セマンティック」)に置き換えることです。 #### ❌ 手がかりの少ないHTML構造 ```
This is the page title
Date: Jan 1, 2021
John
``` #### ✅ より多くの手がかりを持つHTML構造 ```

This is the page title

Date:

John

``` 最初の例のブログページに戻ると、新しい記事が出てきてもCSSセレクターを使わずに最新記事のタイトルを取得することができます。 最新記事のタイトルは `h1` で、つまりページのトップレベルのヘッダーであるのに対し、古い記事のタイトルは `h3` です。テスト実行エンジンはこの違いを利用して、どのタイトルが最新の記事のものかを区別することができます。 ![no-css-selector.png](https://cdn.document360.io/a099d8a2-cfd2-42ca-9906-68b4a337f4a5/Images/Documentation/no-css-selector.png?sv=2026-02-06&spr=https&st=2026-11-15T01%3A12%3A23Z&se=2026-11-15T02%3A12%3A23Z&sr=c&sp=r&sig=UGWVFsLFaT76QqEL6rXs9qb4ARwClu4tFN2k%2Fo5li7w%3D) ウェブサイトの構造を改良して、より意味のあるものにすることは、低コストでできることではないかもしれません。しかし、特に効果的なCSSセレクターが見つからない場合は、試してみる価値があります。 ### JSステップを使用する 以下のように、期待されるテキストを持つ要素にクエリを発行することができます。 ``` const expectedText = "Dec 15, 2021"; const allSpanElementsInPage = document.querySelectorAll("span"); // You need to convert the NodeList returned by querySelector to an Array // to use the filter method. const filteredElements = Array.from(allSpanElementsInPage).filter( (el) => { return el.innerText === expectedText; } ); if (filteredElements.length === 1) { // Perform action as needed. For example, clicking. filteredElements[0].click(); } else if (filteredElements.length === 0) { throw new Error("No elements found with JS") } else { throw new Error(`Could not determine single element. ${filteredElements.length} found.`) } ``` ## 関連記事 - CSS セレクターの基本については、[CSSセレクターを使いこなす](/v1/docs/ja/how-to-use-css-selectors-effec) をご覧ください。 - セマンティックの定義については、 [MDN Web Docs Glossary - Semantics](https://developer.mozilla.org/en-US/docs/Glossary/Semantics) を参照してください。