Best Practices
このガイドでは、パフォーマンスが高く堅牢なテストを書くためのベストプラクティスを共有することを目指しています。
堅牢なセレクターを使用する
DOMの変更に対して堅牢なセレクターを使用することで、例えば要素からクラスが削除された場合でも、テストの失敗を少なくしたり、完全に防いだりすることができます。
クラスは複数の要素に適用される可能性があるため、特に意図的にそのクラスを持つすべての要素を取得したい場合を除いて、可能であれば避けるべきです。
// 👎
await $('.button')
これらのセレクターはすべて単一の要素を返すべきです。
// 👍
await $('aria/Submit')
await $('[test-id="submit-button"]')
await $('#submit-button')
注意: WebdriverIOがサポートするすべての可能なセレクターについては、Selectorsページをチェックしてください。
要素クエリの数を制限する
$
や$$
コマンドを使用するたび(チェーンを含む)、WebdriverIOはDOMで要素を探そうとします。これらのクエリはコストが高いため、可能な限り制限するようにしましょう。
3つの要素をクエリしています。
// 👎
await $('table').$('tr').$('td')
1つの要素のみをクエリしています。
// 👍
await $('table tr td')
チェーンを使用すべき唯一の時は、異なるセレクター戦略を組み合わせたい場合です。 この例では、Deep Selectorsを使用しています。これは要素のシャドウDOMの内部に移動するための戦略です。
// 👍
await $('custom-datepicker').$('#calendar').$('aria/Select')