Webサイト上の目的物をクリックする3つの方法

Webサイト上の目的物をクリックする方法が複数ある。ここでは以下の3つの方法を確認してみたい。

1. Webオートメーション

2. UIオートメーション

3. ブラウザーで検索

1. Webオートメーション

うまいことWebサイト上の要素をセレクターで特定できれば一番確実な方法である。Webブラウザインスタンスを取得できていればブラウザーがバックグラウンドであっても動く。Webサイト上の目的物が画面上に表示されていなくてもよく、スクロールして画面上に表示していなくても動く。そのため、Webサイトのデザインやサイト上部の注意書きとかコメントとかが想定よりも多くて、目的物が画面の外に出てしまっていてもOK。確実にボタンを押す等のアクションがとれる強力な方法である。

Webオートメーションのイメージ。事前にブラウザーインスタンス取得が必要。

f:id:yujihb:20211014000458j:plain

Webオートメーションのセレクターのイメージ。確実に特定ができるよう、目的のWebサイトのソースを分析する必要があるので場合によりとても疲れる。

f:id:yujihb:20211014000513j:plain

 

2. UIオートメーション

UIオートメーションでもWebオートメーションと同じくWebサイト上の要素をセレクターで特定できていればボタンなどを押すことができる。Webオートメーションと違って画面上に目的物が表示されていないと動かないので、UIオートメーションを実行する前に確実にブラウザーをフォアグラウンドにし、目的物が画面に表示されているように工夫する必要がある。Webオートメーションによるテキストボックスへの入力等に反応しないサイトがまれにあり、そのようなときに代替として利用するものとなろう。そもそもUIオートメーションはブラウザーに限らず一般的にアプリケーションのウィンドウ上の要素を扱うためのものであるので、基本的にWebブラウザー上の操作はその專門の機能であるWebオートメーションを使うとよい。

UIオートメーションのイメージ。ブラウザーインスタンス取得は不要でシンプルに直接つくっていける。

f:id:yujihb:20211014000956j:plain

UIオートメーションのセレクターのイメージ。Webオートメーションと同様に確実に特定ができるよう、目的のWebサイトのソースを分析する必要があるので作成者の身体に疲労が蓄積される場合がある。

f:id:yujihb:20211014001006j:plain

 

3. ブラウザーで検索

最終手段。不安定なのでできれば避けたいのだが、どうしてもセレクターで特定できない場合や、Webページが頻繁に変更される等でセレクターでの特定が面倒な場合がある。そんなときは人間がキーボードショートカットで実行することをそのままやってもらうしかない。すなわち、アクション「キーの送信」を使って以下のようにブラウザー上で検索してタブ等を押して目的物にたどり着きエンターを押す、をやってもらう。

  • 検索ボックスを表示するために「{Control}({F})」!
  • 検索キーワードを送信!
  • 検索ボックスを閉じるために「{Escape}」!
  • 見つかったテキストの場所からいつもタブ3つめにあるから「{Tab}{Tab}{Tab}」!
  • ボタンをクリックするために「{Return}」!

サイト上のデザインの変更にとても弱く、誤って意図しない画面を表示してしまうと意図せずタブタブタブエンターが送られておかしなことになったりと不安定である。一方でメリットがいくつかある。フロー上の見た目がわかりやすいこと、セレクターを精緻に考えなくてよいこと。サイズが小さいこと。UI要素を検索しにいかないので爆速であること。さらに、ブラウザーの検索では半角英字で検索しても全角英字のテキストを検索してくれる(逆もOK)ので便利なことがある。セレクターによるHTML上の要素の検索では厳密に全角なら全角でないと検知してくれないので、あいまいに検索してくれるブラウザー検索のほうが優れている場面がある。

ブラウザー検索のイメージ。実行したいことが見えやすい気がする。単純にキーを送信しているだけなので、実行中に他の画面に触ったり不意に別アプリがフォアグラウンドになったりするとすぐにフローが不整合をおこす

f:id:yujihb:20211014001228j:plain

キーの送信の中身のイメージ。キーボードのショートカット等をそのまま入れて再現できる。PC上のほとんどの操作は実現できるがやはり脆弱性は否めない

f:id:yujihb:20211014001241j:plain

 

Webサイトを見ている側はそのWebサイトを管理しておらず当然コントロールできないので見ている側が情報発信側の更新に合わせていくしかない。フローを作成する上では更新のすくないサイトから情報取得するなどの方針も合わせて考慮するとよい。