Seleniumの薄っすい話	
  
百八式
2016年2月6日 戸田広
自己紹介
•  戸田 広(とだ ひろし)	
  @hiroshitoda	
  
•  1979年生まれ	
  36歳	
  
•  Seleniumを触り始めたのは2013年4月頃から。	
  
•  経験浅いので薄い話しかできません。	
  
•  「Selenium実践入門」3つの章を担当しました。	
  
•  10章	
  Selenium	
  IDE	
  
•  12章	
  CI	
  
•  13章 運用	
  
最近の俺とSeleniumはアンケート的にはこんな感じ
今日話すこと
ラスト枠で時間が押してるはずなので、	
  
「Selenium実践入門」に薄すぎて載せられなかった	
  
5分くらいのお話を	
  
切りの良いところまでやります。	
  
(余ったのは2016年のAdvent	
  Calendarのネタになります)	
  
1.  「Selenium実践入門」校正をくぐり抜けて出版された小ネタ	
  
2.  俺と音声合成	
  
3.  俺とSelenium	
  Gridハブがインターネットで特殊ノード	
  
4.  俺とSelenium	
  IDEでuser-­‐extensions.jsに無理して詰め込め!!!	
  
5.  俺とSelenium体操でWebDriver	
  API
「Selenium実践入門」	
  
校正をくぐり抜けて出版された小ネタ
Selenium実践入門 ――自動化による継続的なブラウザテスト	
  
	
  
•  2016年2月2日発売
•  伊藤望,戸田広,沖田邦夫,	
  
宮田淳平,長谷川淳,清水直樹,	
  
Vishal	
  Banthia 著
•  A5判/416ページ
•  定価(本体3,300円+税)
•  ISBN	
  978-­‐4-­‐7741-­‐7894-­‐3	
  
書籍完成までのワークフロー
•  「GitHubで雑誌・書籍を作る」に書かれていたとおり	
  
http://www.slideshare.net/inao/githubkaigi	
  
•  Markdownで原稿を書いてGitHub上でやりとり	
  
•  MarkdownからInDesignに変換して書籍レイアウト編集	
  
•  ここでmd2inaoを使用?	
  
https://github.com/naoya/md2inao	
  	
  
•  InDesignから出力した校正用PDFで校正	
  
校正は第5校まで重ねられ、
細かいレベルでの
文言・表記チェックが
何度も繰り返された。
皆様ほんとうにありがとうございました。
お世話になりました。
それでも
載っちゃう
小ネタがある
ほんとうにごめんなさい
12章 289ページ
	
  
	
  
12章 289ページ
•  4126	
  
よいふろ	
  
伊東に行くなら
ごめんなさい
•  だが我々は、似たようなノリを	
  
どこか近くで知っているような気がする!	
  
Appiumの既定の待ち受けポート
	
  
	
  
Appiumの既定の待ち受けポート
•  4723	
  
IPAD	
  
iPad
考えることはみんなだいたい同じ
•  ユーモアを大事にしましょう。	
  
ハードな仕事でもね。	
  
俺と音声合成	
  
Selenium実践入門 ――自動化による継続的なブラウザテスト	
  
	
  
•  2016年2月2日発売
•  伊藤望,戸田広,沖田邦夫,	
  
宮田淳平,長谷川淳,清水直樹,	
  
Vishal	
  Banthia 著
•  A5判/416ページ
•  定価(本体3,300円+税)
•  ISBN	
  978-­‐4-­‐7741-­‐7894-­‐3	
  
13章 319ページ
13章 319ページ
人の声で通知?
•  人間の聴覚は、	
  
1kHzあたりによく聞こえるピークがあります。	
  
•  これは、人の声の周波数のピークとだいたい同じです。	
  
•  つまり、人の声でテスト結果を通知できると、	
  
他の音声よりも効果的に注意を引くことができる	
  
と言えるわけです。	
  
•  ネタ以上のベネフィットがあるんですよ!	
  
ほんとうですよ!	
  
•  と言って前の職場のCI環境で	
  
社長の音声合成でいろいろとしゃべらせていましたけど	
  
あくまでベネフィットがあるからやってたんですよ!!!	
  
ほんとうですよ!!!!	
  
日本語の音声合成が可能なソフト
•  Open	
  JTalk	
  
•  Linuxサーバーに導入しやすい	
  
•  Softalk	
  
•  ゆっくりしゃべるアレ	
  
•  Linuxに導入するにはつらみ多い	
  
•  VoiceText	
  
•  もやもやしゃべるアレ	
  
•  無料APIあるよ!	
  
•  cURLがあればとりあえず使えるので今回はこれを紹介	
  
•  MacOS	
  Xのsayコマンド	
  
•  Macならこれが一番かんたん	
  
VoiceTextやってみよう
•  VoiceText	
  Web	
  API	
  
•  https://cloud.voicetext.jp/webapi	
  
•  利用登録するとAPIキーがもらえます。	
  
•  公式の利用サンプルがcURL!!!	
  
•  声のタイプによって名前がついています。	
  
もやもやした音声は「SHOW」くん。	
  
•  無料版で作った音声データは次が禁止事項なので要注意。	
  
•  商用利用	
  
•  二次利用	
  
•  配布	
  
VoiceTextやってみよう
$	
  curl	
  "https://api.voicetext.jp/v1/tts"	
  	
  
	
  	
  	
  	
  	
  -­‐o	
  "VoiceText_sample_1.wav"	
  	
  
	
  	
  	
  	
  	
  -­‐u	
  “*****APIキーなので伏せ字*****"	
  	
  
	
  	
  	
  	
  	
  -­‐d	
  “text=きょうは、セレニウムの勉強会で、	
  
ここ、ぎろっぽんミッドタウン に、やってきた、	
  
	
  	
  	
  	
  	
  	
  	
  	
   と言うワケっす"	
  	
  
	
  	
  	
  	
  	
  -­‐d	
  "speaker=show”	
  
	
  
•  もやもやしてる!	
  
今日はSeleniumの勉強会ですよ?
•  はい	
  
•  Seleniumでよくあるエラーログを拾って、	
  
失敗時にそれとなくしゃべってくれるように	
  
してみましょう!	
  
SeleniumというよりはJenkins
•  CI環境で、ビルド後処理を利用します。	
  
•  Jenkins	
  であれば、	
  Post	
  build	
  task を併用しましょう。	
  
https://wiki.jenkins-­‐ci.org/display/JENKINS/Post+build+task	
  
「ログに∼∼∼という文字列が含まれていたら	
  
 ∼∼∼する」というビルド後処理を	
  
設定できるようになります。	
  
•  Seleniumあるあるな処理例外はネタとして拾いやすい。	
  
•  NoSuchElementException	
  
•  TimeoutException	
  
Post	
  build	
  task
	
  
例文
•  (FirefoxDriverでTimeoutExceptionが出たら)	
  
ファイヤーフォックスが、	
  
また、動かなくなっちゃったみたいっす。	
  
バージョンでも、上がったんっすかね。	
  
•  (Gitリポジトリーへのコミットを	
  
 トリガーにしたジョブで	
  
 NoSuchElementExceptionが出たら)	
  
14時53分の、戸田ひろしのコミットのせいで、	
  
ノー・サッチ・エレメントになったみたいっすよ。	
  
ところで音声データの再生はどうするの?
•  手近のスピーカーから鳴らさないと聞こえないよな…	
  
•  Jenkins	
  Sounds	
  plugin	
  を使って、	
  
再生ページを常時開いているPCで鳴らすとか、	
  
https://wiki.jenkins-­‐ci.org/display/JENKINS/Jenkins+Sounds
+plugin	
  
音声再生用のスレーブマシンを作ってそこで鳴らすとか。	
  
•  Raspberry	
  PiをJenkinsスレーブにして音声再生させるのが	
  
最近の俺的流行です。	
  
•  Linuxだとaplayコマンドで音声再生するのがかんたんですが、	
  
実行ユーザーが内蔵音源を鳴らせる権限グループにいないと	
  
鳴らせなかったりしますので気をつけましょう。	
  
結論
•  ユーモアを大事にしましょう。	
  
ハードな仕事でもね。	
  
俺とSelenium	
  Gridハブが	
  
インターネットで特殊ノード	
  
Selenium実践入門 ――自動化による継続的なブラウザテスト	
  
•  2016年2月2日発売
•  伊藤望,戸田広,沖田邦夫,	
  
宮田淳平,長谷川淳,清水直樹,	
  
Vishal	
  Banthia 著
•  A5判/416ページ
•  定価(本体3,300円+税)
•  ISBN	
  978-­‐4-­‐7741-­‐7894-­‐3	
  
•  そろそろ うっとおしいわよ!!	
  
12章	
  288ページ
Selenium	
  Grid
•  実装としてはオーソドックスなRESTful	
  Web	
  API	
  
•  既定では 4444/tcp などの独自のポートを使って	
  
HTTPで通信しています。
人情:	
  Webプロキシ
•  well-­‐knownポート使ってないWebサービスは	
  
well-­‐knownポートの皮をかぶせたくなるのが人情。	
  
人情:	
  Webプロキシ
•  これは問題なく動作します。	
  
•  Apache	
  HTTPDならプロキシ設定例はこんな感じかな∼	
  
	
  
ProxyPass /wd http://wd-hub.jp:4444/wd
ProxyPassReverse /wd http://wd-hub.jp:4444/wd
SetOutputFilter INFLATE;proxy-html;DEFLATE
ProxyHTMLURLMap http://wd-hub.jp:4444/wd /wd
ProxyPass /grid http://wd-hub.jp:4444/grid
ProxyPassReverse /grid http://wd-hub.jp:4444/grid
SetOutputFilter INFLATE;proxy-html;DEFLATE
ProxyHTMLURLMap http://wd-hub.jp:4444/grid /grid
人情:インターネット
•  well-­‐knownポートなWebサービスは	
  
インターネットに公開したくなるのが人情。	
  
人情:インターネット
•  これは普通に動きます。	
  
•  ほんと普通…	
  
人情:https
•  インターネットに公開したWebサービスは	
  
httpじゃなくてhttpsにして暗号化したくなるのが人情。	
  
人情:https
•  これはできません!
•  ノードで指定できるハブへの接続プロトコルが、	
  
現状、HTTP限定になっている。	
  
人情:おうちに特殊なノードを作りたい(NATを越えたい)
•  インターネットに公開されたWebサービスには	
  
おうちのノードからもつなぎたくなるのが人情。	
  
人情:おうちに特殊なノードを作りたい(NATを越えたい)
•  一応可能です!	
  
•  CIの基本環境をクラウドに置きつつ	
  
クラウドに置けないような環境を	
  
オンプレミスでカバーできなくもない。	
  
•  俺的注意点はいくつかある。	
  
•  ハブから見えるIPアドレス(だいたいグローバルIPアドレス)を	
  
ノードに設定する必要があるので、おうちに固定IPがほしいずら…	
  
•  おうちのルーターにあんまり穴開けたくないずら…	
  
•  ノードが双方向通信じゃなくて、	
  
ハブへの方向だけの片方向通信だったら楽なのになあ…	
  
•  15年くらい前にFTPのモードで似たようなこと言っていた気がする	
  
結論
•  Seleniumはおうち(LAN)でやりましょう。	
  
ご静聴	
  
ありがとうございました。
また年末∼∼∼

Seleniumの薄っすい話 百八式 @ 第3回 日本Seleniumユーザーコミュニティ勉強会