ロフトワークの今を伝えるブログメディア

ちゃんとリダイレクトできてる?!サイトリニューアルしたときのテストに使えるブラウザ自動操作術

サイトリニューアルのときに、大量にリダイレクトを設定することがあります。
設定した通りにリダイレクトされているか、どうやってテストしますか?
100ページくらいのサイトなら、1ページずつアクセスして指定したページに遷移するか確認するとかでしょうか。

 

それでもいいのですが、1000ページを超えてくると大変です。
Excelなどでリダイレクト元のURLとリダイレクト先のURLの一覧があるとして、リダイレクト元のURLをブラウザで開き、そのURLがリダイレクト先のURLと一致するか確認する。公開直前までバタバタして疲れ切っているアシスタント・ディレクターが対応するとして、この間40秒としましょう。

 

40秒x1,000ページ=40,000秒=666.7分=11.1時間

 

リニューアル前にテストできる環境ならいいですが、サイトリニューアルしましたと公開してからテストだけで1日以上かかるのはしんどいです。

 

そんなわけで、ブラウザ自動操作の出番です。今回はブラウザを実際に起動させなくてもいい内容なので、ChromeではなくヘッドレスブラウザーのPhantomJSを使います。

 

要約

   require "selenium-webdriver"
@driver = Selenium::WebDriver.for :phantomjs
@driver(original_url)
puts @driver.current_url

 

RubyでWebブラウザの自動操作ライブラリSelenium、更にGoogleスプレッドシートを読み書きできるライブラリも使って、下記ようにチェックを自動化します。

 

  • スプレッドシートにリダイレクト元URLとリダイレクト先URLのリストをつくる
  • Seleniumでリダイレクト元のURLをブラウザ(phantomjs)で開く
  • 開かれたページのURL(リダイレクトされていればリダイレクト先URLと一致)を取得
  • スプレッドシートの新規列に開かれたページのURLを記述
  • リダイレクト先URLと開かれたページのURLが一致してるかチェック(条件付き書式が便利)

 

スプレッドシートの読み込み・書き込みは下記を参考にしました。

RubyからGoogleSpreadsheetに書く – お手軽編

プログラムを実行してからスプレッドシートを眺めてみてください。
空白だったセルに勝手にURLが書き込まれていくのは、ちょっと生き物みたいな感じがするかもしれません。

 

全文(ではありません)

require "selenium-webdriver"
require "google_drive"
require "./google_drive_wrapper"
require "rspec"
include RSpec::Expectations
# Google Docs Folder
FOLDER = "フォルダ名"
# Google SpreadSheet
SS = "スプレッドシート名"
# Google SpreadSheet Worksheet
WS = "ワークシート名"
describe "RedirectChecker" do
before(:each) do
@worksheet, @folder = GoogleDriveWrapper.get_worksheet(FOLDER, SS, WS)
@driver = Selenium::WebDriver.for :phantomjs
@accept_next_alert = true
@driver.manage.timeouts.implicit_wait = 4
@verification_errors = []
end
〜〜略〜〜
it "redirect_checker" do
@worksheet.num_rows.times do |i|
@driver.get(@worksheet[i+1, 1])
puts @driver.current_url
@worksheet[i+1,  3] = @driver.current_url
end
@worksheet.save
end
〜〜略〜〜
end

 

1ページあたり4秒として約1時間でテストできるわけですが、1日分の工数を貰ったらダメかな?(笑)

 

なお、私はWeb、コンテンツ、サービス、コミュニケーション、空間などをデザインする会社の片隅にいる雑用係ですので、プログラムが動かないとか難しいことは聞かないでください(ΦωΦ)

川竹 敏晴 川竹 敏晴

大学卒業後、システム開発会社にエンジニアとして勤務。Java等を用いて大小様々なWeb系システムを開発。その後、Web制作会社にて数多くのCMS導入案件の開発を担当したのち、2011年にロフトワーク入社。主にCMS導入案件の技術的なサポートを担当している。自他共に認めるCMS好きで、日々新しいCMSの研究を行なっている。>>プロフィール詳細

関連記事