前回基本編ではXPathの基本的な使い方・取得方法を記事にしました。まだの方は是非ご覧ください!
今回は、
- ワイルドカードの使用方法
- タグ内の要素を論理式で記載する方法
- タグ外の文言を指定する方法
を記事にします!
XPathの記載方法その1(初級編)
まず、XPathとはなに?という方は前回の記事を参照してください!
なるべく今回の記事だけでもわかりやすく記載するつもりですが、こちらを理解していただいた上で見ていただくとより今回の記事がわかりやすくなるので是非ご覧ください!
タグ部分にワイルドカードを指定できる
前回の要素(googleの検索ボックス)をもとにご説明します。
//input[@name="q"]
記載の「input」はhtmlのinputタグを示していますがそれをワイルドカードを指定することで任意のhtmlタグにすることができます
//*[@name="q"]
このように「*」を使用することでワイルドカードにすることができます。
タグ内要素に論理式を適用できる
前回の記事でさらっと説明しましたが、タグ内要素を論理式を使用することによって複数選択できたりどちらかにすることもできます。
例えば、googleの検索ボックスのタグ内要素はこのようになっています。
<input class="gLFyf" jsaction="paste:puy29d;" maxlength="2048" name="q" type="text" aria-autocomplete="both" aria-haspopup="false" autocapitalize="off" autocomplete="off" autocorrect="off" autofocus="" role="combobox" spellcheck="false" title="検索" value="" aria-label="検索" data-ved="0ahUKEwiK2ZyvpqT9AhU3gFYBHe31ClIQ39UDCAY">
これを前回までは
//input[@name="q"]
と記載していましたが、ほかの要素も併せないと唯一で指定できない場合が出てきます。その場合に論理式を使用します。例えばname要素以外でtype要素を合わせたい場合は下記のようになります。
//input[@name="q" and @type="text"]
「and」を使用することによって要素を絞ることができ、指定する部品を唯一のものにすることができます。合わせ技1本みたいな感じです。
論理式なので「or」も使用することができます。使用するユーザによって要素が違う時に使用したりします。
//input[@name="q" or @name="sonohoka"]
このように同じ要素でも変化があるものに関して「or」を使用することによってメンテナンスコストを抑えることができます。
タグ外の文言を指定する方法
表示されている文言はタグ外に表示されていてかつ要素の種類も表示されていないので今までの方法では指定ができないです。
例えばこのようなタグがあるとします。(GoogleトップページのGoogleについてのリンクを一部抜粋)※今回はわかりやすく説明するため不要な部分に関しては省きました。
<a class="MV3Tnb">Googleについて</a>
この中で表示がGoogleについての文言があることを確認したい場合classを指定しては意味がないです。
そのためタグ外の文言を指定するようにします。
//*[text()="Googleについて"]
このようにtext()=”[検索したい文言]”と記載すれば文言があるかの確認が可能です
最後に
いかがでしたでしょうか?今回は基本編から少し背伸びして応用の中でもわかりやすいものをピックアップしました。
これだけでも指定の幅が広がりましたがまだまだ指定の方法はあり、実際に運用していくうえでは技法としては全然足りないです。あと2本くらい記事を作成したら実際に応用を交えた実践編を投稿していきたいと考えておりますので、お付き合いよろしくお願いいたします!
コメント