セレクター設定のコツ

ウェブサイトのページからUI要素を取得するとセレクターが自動的に取得される。自動的に取得されたままの状態で問題なくクリックできることがほとんどだが、ページ上のテーブルの数やClassの内容等の状態が少しかわったりするとセレクターで対象を発見できずエラーとなることがある。

自動取得されたセレクターを少しだけ変更することでウェブサイトの更新によるエラーの頻度を減らすことができる。そのために例えば以下のような方針が考えられる。複数回にわけてお送りする。

セレクターの値設定の演算子を「含む」に変更する
要素が一つだけの階層でclass等を指定しない

目的物を底辺としてその上の階層を少なくする

セレクターは何をセレクトしようとしているのか

ウェブページ上のクリックする対象を確実にセレクターで特定するにはウェブページの構造を確認することが必要となる。その際には多くのブラウザーに備わっているHTML確認ツールを利用するとよい。以下Chromeの「検証」の機能を使って確認する。

 

1. ChromeのHTML確認ツールを起動する。目的のウェブページでなにもないところを右クリックし「検証」を選択する。

f:id:yujihb:20211106003319j:plain

2. Chromeの右ペインに目的のウェブページのHTML構造が表示される。

f:id:yujihb:20211106003333j:plain

3. Webページのボタンを押すフローをつくる。アクション「Webページのボタンを押します」にてMSNのサイトのニュース欄の一つのリンクのUI要素を取得してみる。

f:id:yujihb:20211106003302j:plain

f:id:yujihb:20211106004724j:plain

 

4. UI要素を取得した結果自動的に以下のようなセレクターが取得された。

f:id:yujihb:20211106003310j:plain

5. 取得したリンクの場所をChromeで探す。右ペイン上でマウスを上下に動かすと左ペインのウェブページ上で該当する箇所がハイライトされるので探しやすい。

f:id:yujihb:20211106003344j:plain

6. 取得したリンクについてウェブページ上の位置関係を詳しく確認する。

f:id:yujihb:20211106003354j:plain

7. ウェブページ上のタグと下記の自動取得されたセレクターとを比較すると、同一の構造をしていることがわかる。セレクターはClassの値などをもれなく指定している。

main[Id="main"] > div[Class="stripecontainer"]:eq(0) > div[Class="news stripeouter"] > div[Class="stripe full-width"] > div[Class="paging-container"] > div[Class="newlist stripeheadlinelinklist"]:eq(0) > div[Class="one-col"] > ul[Class="col"] > li[Class="hdlist  primary"]:eq(0) > a[Class="contentlink"]

 

UI要素を取得した際にセレクターが何を自動取得しているのかが分かり、セレクターとウェブページとの対応関係が分かればこっちのもの。セレクターを編集して柔軟に目的の場所を指定することができる。

UI要素とセレクター概要

ウェブサイトやアプリケーションのウィンドウ上の要素をクリックしたりテキスト入力欄にテキストを入力したりする場合にはWebオートメーションやUIオートメーションを利用する。それらアクションを実行するにはウィンドウ上のUI要素を取得して設定する必要がある。UI要素にはセレクターが含まれており、クリックなどを実行する対象をそのセレクターで特定することとなる。

Webページのボタンを押すフローの例

f:id:yujihb:20211102013237j:plain

Webブラウザインスタンスを取得する

Webオートメーション実行に必須の準備アクション。例えばフォアグラウンドで開いているChromeWebブラウザインスタンスとして取得する。

f:id:yujihb:20211102013110j:plain

UI要素を取得する

取得したWebブラウザインスタンスを指定しつつUI要素を指定する。ウェブサイトのページ上の押したいボタンのUI要素を新規取得するため「UI要素」の欄の右側の下矢印を押す。

f:id:yujihb:20211102013122j:plain

そして「UI要素の追加」ボタンを押す

f:id:yujihb:20211102013134j:plain

押したいボタンがあるサイトを開いて、押したいボタンあたりにマウスを移動していって赤い枠が出たらCtrlを押しながらクリックする。「追跡セッション」のウィンドウ上に取得したUI要素が現れたら完了ボタンを押す。なおアクションの名称は「Webページのボタンを押します」だが特段にボタンの形状をしていなくとも問題なく、ウェブサイト上のよくある普通のリンクを押すために使える。

f:id:yujihb:20211102013144j:plain

取得したUI要素は右ペインのUI要素の一覧に表示される。UI要素の取得が完了。

f:id:yujihb:20211102013432j:plain

セレクターの確認

右ペインに表示されるUI要素をダブルクリックすると「UI要素"〇〇"のセレクター」というダイアログが表示される。さらにbodyとかClassとかの文字が書いてあるグレーの部分をダブルクリックする。

f:id:yujihb:20211102014902j:plain

セレクター ビルダーが表示される。ここで押したいボタンを特定していることとなる。階層構造をしていたりbodyやdivやh3等があることから分かるとおり、目的のウェブサイトのページのHTMLの構造とタグ等の要素によって押したいボタンの場所が表現されている。

f:id:yujihb:20211102014917j:plain

ウェブサイトのページからUI要素を取得すると上記のようにセレクターが自動的に取得される。自動的に取得されたままの状態で問題なくクリックできることがほとんどだが、ページ上のテーブルの数やClassの内容等の状態が少しかわったりするとセレクターで対象を発見できずエラーとなることがある。そのような場合には自動取得されたセレクターを編集する必要がある。どのような方針で編集していけばよいのだろうか。...「なんだか難しそうだなあ。」...「文系の私でもできるの?」... もちろん。つづいてセレクターの編集の方法やコツをお送りいたします。