画面自動操作 Selenium編
~テスト自動化以外での活用方法~
自己紹介
• 高橋秀平
• 2014/4にEVERRISE入社(現在3年目)
• 広告代理店での便利ツール開発(主にVBA、Ruby)
• 最近はScalaに興味あり
• 子持ち
広告代理店での活用方
法をご紹介します。
アジェンダ
◆現場の皆様が困っていること、、、
◆Seleniumとは
 ・メリット
 ・デメリット
◆サンプルコード
・その1(ブラウザ自動操作)
・その2(Webスクレイピング)
◆困ったことあるある
◆まとめ
現場の皆様が困っている
こと、、、
・ブラウザ上で、毎日何度も同じような作業するのめん
どくさい。

(例)csvデータのDL、入稿作業(データ入力) etc...
・数が多すぎて時間的に終わらない。
・業務時間外でも上記の作業を行いたい。
・レポート管理ツールを使って、欲しいデータだけ取ろ
うにも、サイト(媒体社側)でAPIを公開していない。
 そうだ!
自動化すればいいんだ!
Seleniumとは
・Webアプリのテストを自動化するツール。
・IDE と WebDriverがある。

→IDEはfirefoxのプラグイン。

 自動記録でスクリプトに書き起こせる。

→WebDriverはブラウザを操作するライブラリ。

 Java、Rubyなど色々な言語で使える。
・マルチブラウザ対応。(chrome,firefox,IE etc..)
・DOM操作でWebページの要素を特定して操作する。
メリット
・単純だけど時間がかかる作業を人がやらなくて済む。
・Javascriptより要素を特定するメソッドが豊富。
・Selenium IDE(firefoxのプラグイン)を使えば、自動記録
でスクリプトを書き起こせて、実装する手間が省けて楽。
デメリット
・リファレンスが少ない。
・保守管理が大変。

画面の仕様変更に弱く、結構な頻度で改修するはめにな
る。
・対象の画面が複雑だと、IDEで生成したスクリプトが動
かない。
・実行環境のネット回線に依存する。
サンプルコード
ブラウザ自動操作 イメージ
このボタンを押したい
VBAコード例
スクレイピング イメージ
これとりたい
VBAコード例
困ったことあるある
・クリックや入力等のアクションで、スクリプトの処理と
Webページとの間にラグが出てエラーになる。

→間にwaitメソッドを入れて、1秒以上待たせる等の
チューニングが必要。
・非同期処理を実装しているWebページだと止まりやすい

→更新前になく、更新後にある要素を見つけて、その要素
が見つかるまで待たせる処理を入れる。
・フォーム(input要素)に値を入力できない

→Javascriptでdisabled、readonly属性をfalseに書き換
える
まとめ
・手軽に使えて便利。
・動作安定化までは、ひたすらトライアンドエラー
・用法用量を守って、正しくお使いください。

 例) 岡崎市立中央図書館事件
参考ページ
・ClockAhead 開発Blog
・初心者からガッツリスクレイピング
・Webスクレイピングのノウハウを公開します
もっと良い方法があれば、
後でこっそり教えて下さい。

201605 fa勉強会スライド