狠狠撸

狠狠撸Share a Scribd company logo
Selenium Web Driverを
使ってつまらない作業を
駆逐してやる!!
@joe_re
ある日のできごと
ぼく「一通り作業終わりましたー。」
PM「お疲れ!じゃあテストしなきゃなー。」
ぼく「テスト?ユニットテストなら書いてますが、
受け入れテストまでこちらでやるということですか?」
PM「いや、受け入れテストは別部隊でやるよ。
ただ今回は政治的な都合上、
全パターンテストをやっているっていう
エビデンスが欲しいんだよね。」
ぼく「エビデンス?(嫌な予感。。)」
※ 多少脚色してますが概ね実際の出来事です。
PM「全パターンの
スクショ撮りをしよう。」
ぼく「ファッ!?」
What is スクショ撮り
スクリーンショットを撮る作業のことです。
一切の知的労働性を排除された超絶力仕事なので、
エンジニアの体調を著しく損なってしまうことがあります。
スクショ撮り(英: take a Scsho!) とは
完成したシステムの画面上の表示のエビデンスを残すために行われる、画面のスクリーンショットを撮る
作業のこと。
理不尽な政治的事情によるエビデンスで要求されることが多い。
その性質上、作業によって得られる成果物も確実性があるとは言えず、達成感も得られない。
エンジニアからは嫌われる傾向にある。
一切の知的な喜びを得られないこの作業は、エンジニアを疲弊させ、鬱病、適応障害など様々な心の病を
引き起こしてしまう。
出典 wikipedia(ウソ)
駆逐してやる。
この世から1匹残らず!!
(ていうか仕様変わったらどうするの?1から撮り直すの?
勘弁してぇぇぇぇぇぇぇぇぇぇぇぇ!!!)
そこで救世主、
Selenium Web Driver!!
What is Selenium Web Driver
Webブラウザのテストを自動化するための?
テストフレームワークです。
WebブラウザのAPIを利用して、?
クリックやスクロール?文字入力などを始めとして、
あらかじめ定義されたテストを自動的に実行します。
Java、Ruby、Python、Nodejsなど、?
様々な言語で記述することができます。
これを使って、
スクショ撮りを自動化します。
デモ
アプリケーションの機能
? サインアップ、ログイン、ログアウトできる
? 自分の自己紹介を登録し、閲覧できる
https://github.com/joe-re/selenium-snapshot-sample
自動化したい要件
1. 4人のテストユーザでログインする。
2. ログイン後にプロフィールページを表示する。
3. 表示される画面のスクリーンショットを撮る。
4. 撮ったスクリーンショットのファイル名は、?
ユーザ名.pngにする。
解説
require ‘selenium-web-driver’
driver = Selenium::WebDriver.for :firefox
FileUtils.mkdir_p 'screenshots'
[
{ email: 'yui_hirasawa@test.co.jp', password: ‘yuihirasawa’ },
# ..中略.. #
].each do |user|
# ログイン
driver.navigate.to 'http://localhost:3000'
driver.find_element(:id, 'user_email').send_keys(user[:email])
driver.find_element(:id, 'user_password').send_keys(user[:password])
driver.find_element(:name, 'commit').submit
sleep(1) # デモで見やすいように1秒待機
# profileを表示する
driver.navigate.to 'http://localhost:3000/profile'
sleep(1) # デモで見やすいように1秒待機
# screenshotを撮る
username = driver.find_element(:id, 'username').text
driver.save_screenshot("screenshots/#{username}.png")
# ログアウト
driver.find_element(:id, 'logout').click
end
driver.quit # 終了
1人忘れてた!!
なんてクソなプロダクトだ!
画像は一番上にしてくれ!
仕様変更
でも、大丈夫!
そうSelenium Web Driver
ならね!!
Enjoy the life of engineers!
Thanks!

More Related Content

厂别濒别苍颈耻尘奥别产顿谤颈惫别谤を使ってつまらない作业を駆逐してやる!!