『Selenium』で人間の仕事を自動化

システム部のKです。
最近の仕事では、ブラウザの自動操作ができるSeleniumを使って、Webサイトをいろいろ操作するということをやっています。

テストに使っているわけではなく、人間の仕事の一部でも自動化して、人間の負担を減らそうとするものを作成中です。
Seleniumのプラグラムを書いていて、まどろっこしい点としては、トライ&エラーに時間がかかることでしょうか。

書いたプログラムを実行する度にブラウザが立ち上がり、順番に操作をして進んでいくという流れになるので、後半の方の操作でエラーになって終了してしまった場合、その箇所を再度試すには、前半の方の自動操作を見届けてからでないとたどり着けません。

又、Ajaxがふんだんに使われているWebサイトですと、それも考慮して対応する必要があるので、静的なHTMLのページを自動操作するより、手間が多くなります。
人間が操作する場合、見えない場所にあるものは、見えるようにしてから操作するわけですから、同じようにプログラムする必要があったりします。

自動操作中のウィンドウサイズを手で変更してしまうと、見えているはずのボタンが見えなくなり、エラーになると言う現象にもハマりました。
プログラム自体は一箇所も変更していないのに、結果が変わってしまうので、気づくまではかなり謎でした。

ところで、最近お気に入りのTV番組は「ポツンと一軒家」です。
その中でGoogleマップ上で一軒家にズームインしていく演出があるのですが、それっぽいものをSeleniumを一部使って、アニGIFにしてみました。

人様の家に勝手にズームインするのもおこがましいので、青森県の御倉山にズームインしています。

<code><pre>
require “selenium-webdriver”

driver = Selenium::WebDriver.for :chrome
driver.manage.window.resize_to(1200, 700)

# 青森県の御倉山にズームイン
driver.navigate.to “https://maps.google.co.jp/maps?ll=40.459880,140.910121&t=k&z=18”
sleep(20)

# 左上の検索ボックスのフォーカスを外します
input = driver.find_element(:xpath, ‘//*[@id=”searchboxinput”]’)
driver.action.move_by(input.location.x + 600, input.location.y + 300).click.perform

# ズームアウトしながらスクショ撮影
20.downto(1) do |i|
driver.find_element(:tag_name, ‘html’).send_keys(:subtract)
sleep(10)
driver.save_screenshot(“%02d.png”%[i])
puts i
end
</pre></code>

Seleniumでやっていることは、ズームアウトしながらスクショ撮影しているだけです。

出来上がった画像を、GIFアニにしています。

GIFアニっぽくループにしてみました。

こちらは東京都の市道山です。

始業時間が遅めで、スーツは着ないで済ませたいPHPプログラマの方、ぜひご応募ください!

スタッフブログ最新記事

タグ

スタッフブログ最新記事

月別 アーカイブ

2024年

2023年

2022年

2021年

2020年

2019年

2018年

2017年

2016年

2015年

2014年

2013年

2012年

2011年

2010年

2009年

2008年

2007年

教育官ブログ
\風俗業界時評/シン・コラム
英語スタッフブログ!