Automatorでブラウザ操作を自動化してみた話

# Automatorでブラウザ操作を自動化

macのAutomatorを使ってブラウザ操作を自動化する自分なりの方法を紹介します．

## Automatorって？
macのデフォルトで入ってるアプリで，アイコン(↓)が何かのゲームっぽくて個人的に好きです

![icon.png](https://qiita-image-store.s3.amazonaws.com/0/283991/5f207dc5-8a7f-3f4a-21b3-1dff55333541.png)


## なんでAutomator？

#### seleniumは？
ブラウザ自動化でパッと思いつくのが**selenium**ですが，ログインに2段階認証とか使ってるサービスだと色々めんどくさそうだったのでやめました

#### 他にない？
chromeの拡張機能[Tampermonkey](https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo?hl=ja)でjavascriptを仕込んで自動化も考えましたが，ボタン要素以外をクリックして隠れてる要素(youtubeでいう動画の下のバーみたいな)を表示することが出来なかったので(clickイベントがトリガーじゃないのかな？)直感的に操作が可能なAutomatorにしました！

## 概要
この記事では，Automatorで以下のことをさせる方法を紹介します．

1. ブラウザを自動で立ち上げて指定したURLのWebページを表示
1. リンクをクリックしてリンク先にジャンプ
1. リンク先で何かしらをクリック
1. リンク先で戻るボタンをクリックして最初のページに戻る
1. 以後1〜4繰り返し

もっとむずいことしたいって人は，他の記事探してください，，

## 使い方

まず，Automatorを起動します．

![init.png](https://qiita-image-store.s3.amazonaws.com/0/283991/086f8c06-cac9-f3b8-02b5-3f62ba6d3f70.png)

こんな画面が表示されると思います．

Automatorでの自動化の流れはワークフロー(マクロみたいなの)を記述してそのワークフローを動かす感じなのでまず，ワークフローを記述します．

今回は，ワークフローを選びます．

#### ブラウザを表示する

次に，画面左のインターネットという場所を選んで指定されたURLを取得をダブルクリックします

![direct_url.png](https://qiita-image-store.s3.amazonaws.com/0/283991/e24ffa86-fc44-8084-bdf9-96d706ebfc1d.png)


こんな感じの画面になると思うので，アドレス部分に最初に表示させたいWebページのアドレスを入力します．

入力出来たらまた画面左のインターネットをクリックして，Webページを表示をクリックします

![open_window.png](https://qiita-image-store.s3.amazonaws.com/0/283991/889d1263-6ed1-5e64-f504-fd28a436ffc0.png)



ここまで出来たら一度画面右上の"実行"ボタンから実行してみましょう！ブラウザが勝手に立ち上がって勝手に指定したURLのページを表示するはずです！

##### ＊ここで注意することがあります

デフォルトブラウザで立ち上がるので**デフォルトブラウザ**をChromeにしてる人はChromeで立ち上がります．そして，Chromeでは以下で指定するフローがうまくいかなかったのでデフォルトブラウザをSafariにして進めていきます．Chromeでも調べたら方法は出てきますが面倒そうだったし，Safariでも出来そうなことはSafariでしましょう！，(笑)

#### ページ内のリンクをクリックする

さて，Webページが表示できたら次はクリックする方法です

Automatorの"実行"の左のほうにある"記録"というボタンをクリックします．クリックしたらブラウザのクリックしたいボタンをクリックします．ここではテキトーにyoutubeのトップページを開いた場合を想定して動画のリンクをクリックします．クリックしたら
![stop_button.png](https://qiita-image-store.s3.amazonaws.com/0/283991/d84f8bcb-ac62-4378-299f-338dd398d0df.png)



こいつの停止ボタンをクリックして記録を止めます．

そしたらこんな画面になってると思います

![click_event.png](https://qiita-image-store.s3.amazonaws.com/0/283991/f023b6c3-93e8-e853-991d-b6c621d1b10e.png)


記録中にミスったら右上の×ボタンで消します．

##### ＊ここでも注意点があります

"記録"を押した後にブラウザをクリックしてアクティブにしないといけないんですが，それもフローに入るので無駄クリックが一回入ることになります．気にしない人はいいですけど，気持ち悪いので消します．

###### 消し方
ここでは，ブラウザをアクティブにするクリック一回とリンクのクリックで2回クリックしたことになるのでこんな画面になってると思います．

画像

この一番目のクリックはいらないクリックなので，クリックしてDeleteキーを押して消します．

ここまでを実行すると

1. youtubeのホームを開いて
1. 動画のリンクをクリックして
1. 動画ページにジャンプ

までできると思います．

#### 動画をクリックして止める

ここまでできたら，次は動画をクリックして停止します．"記録"をクリックして動画の真ん中をクリックします．停止ボタンをクリックします．

実行すると動画が止まるとこまで自動化出来たのが確認できると思います．

#### ホームに戻る

最後に，ホームに戻ります．"記録"をクリックして画面左上のYoutubeのロゴをクリックして，記録を止めます．

#### ループ処理

今までの処理を自動でループしないと自動化する意味ないですよね，(笑)

ループの仕方は簡単で，画面左のユーティリティをクリックします，するとループという項目が表示されると思うのでダブルクリックします．

![loop.png](https://qiita-image-store.s3.amazonaws.com/0/283991/ca876705-75b0-92ce-42cd-874c5d848e11.png)


`続行するかどうかを確認`というのは，僕は勝手にループして欲しいので`ループして自動的に停止`を選びました．`後に自動的に停止`というのはループを繰り返す時間または回数なので，ここでは5回とします．下の項目は今回は無視です．


## まとめ

いかがだったでしょうか？これくらい簡単な動作なら自分でやれよって話ですが，(笑)
AppleScriptをはさんだり変数を使用したり出来るようなので，それ使ったらもっと楽しいこと出来そうですね！