要素特定のテクニック

便利な XPATH パターン

text

未完成 - ノードのテキストコンテンツに基づく要素の特定

starts-with

多くのサイトでは、要素の id 属性に動的な値を使用しており、要素を特定することが困難です。1 つの簡単な解決方法として、XPath 関数を使って、その要素について知っていることをベースに要素を特定するやり方があります。たとえば、動的 id が <input id="text-12345" /> のような形式で、 12345 が動的に変わる数だとすると、 //input[starts-with(@id, 'text-')] という XPath を使用できます。

contains

ほかのテキストに囲まれている可能性がある値によって要素を特定できる場合には、contains 関数を使用できます。たとえば、 <span class="top heading bold"> という要素を、 ‘top’ クラスと ‘bold’ クラスと組み合わせることなく、 ‘heading’ クラスをベースにして特定できる場合には、 //span[contains(@class, 'heading')] という XPath を使用できます。この方法のほうが、 css=span.heading という CSS ロケータストラテジーを使う場合よりも簡潔で (おそらくはより高速) であることもあります。

siblings

未完成 - 兄弟関係に基づく要素の特定。フォームやテーブルで使うと便利

XPATH の代わりに CSS を使う

クラスに基づく要素の特定

XPath 内の関連クラスに基づいて要素を特定するには、対象となる要素が複数のクラスを持っている可能性があり、さらに、これらのクラスが任意の順序で定義されている可能性がある点を考慮しなければなりません。しかし、CSS ロケータを使えば、要素の特定はさらに簡単に (かつ高速に) なります。

  • XPath: //div[contains(@class, 'article-heading')]
  • CSS: css=div.article-heading