SlideShare a Scribd company logo
1 of 22
Download to read offline
PHPerのための	
  
(不遇に負けない)
Selenium入門
2015年10月19日 戸田広
自己紹介
•  戸田 広(とだ ひろし)	
  @hiroshitoda	
  
•  1979年生まれ	
  36歳	
  
•  ここ2年くらいは	
  
JavaとJavaScriptばかりでしたが、	
  
最近またたまにPHPも書いてます。	
  
•  でも相変わらずPHPは5.2くらいで止まってます。	
  
Composerっておいしいの?	
  
俺とCodeIgniter
いろいろありました。
俺とFuelPHP
特にありません。
今日話すこと
※CodeIgniterの話はしません。	
  
	
  
1.  ブラウザ自動操作フレームワーク「Selenium」の紹介	
  
2.  Selenium	
  IDEと不遇のPHP	
  
3.  Selenium	
  WebDriverと不遇のPHP
ブラウザ自動操作フレームワーク	
  
「Selenium」の紹介
ブラウザ自動操作フレームワーク「Selenium」の紹介	
  
•  Seleniumとは	
  
•  Webブラウザーやスマートフォンアプリを	
  
リモート操作するライブラリー	
  
•  旧バージョンと新バージョンが	
  
それぞれに使われていますが、	
  
徐々に新バージョンに移行しています。	
  
•  Selenium	
  RC	
  
•  バージョン1	
  
•  GUIツール「Selenium	
  IDE」はこちらがベースです。
•  Selenium	
  WebDriver	
  
•  バージョン2	
  
•  W3Cで標準化されています。 http://www.w3.org/TR/webdriver/	
  
•  スマートフォン向けの拡張「Appium」があります。	
  
ブラウザ自動操作フレームワーク「Selenium」の紹介
•  プログラムの単体テストではなく、	
  
ユーザー操作テストの自動化をねらえるものです。	
  
•  様々な言語向けの実装が作られていますので、	
  
皆さんやりましょう!!!!
•  Java	
  
•  Ruby	
  
•  C#	
  
•  Python	
  
•  JavaScript	
  
•  PHP	
  
•  Perl	
  
•  Objective-­‐C	
  
•  しかしながら、言語によっては	
  
だいぶ不遇な感じなのです…	
  
Selenium	
  IDEと	
  
不遇のPHP
Selenium	
  IDEと不遇のPHP
•  デモやります!	
  
•  操作記録・再生	
  
•  アサーション	
  
•  Selenium	
  IDEは、Firefoxのプラグインです。	
  
•  コマンドは独自ですが、	
  
一般的なプログラミング言語のフォーマッターで	
  
エクスポートできます。
Selenium	
  IDEと不遇のPHP
•  _人人人人人人人人人人人人人人人人_

> 不遇とは           <

> 才能を持ちながらも      <

> めぐりあわせが悪くて     <

> 世間に認められないことである <

 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
Selenium	
  IDEと不遇のPHP
Selenium	
  IDEと不遇のPHP
•  PHPフォーマッターの公式対応は	
  
ずいぶん前に滅亡しました!!	
  
不遇!!!!	
  
•  Mozillaで配布されているプラグインは	
  
旧バージョンのSelenium	
  RC向けの	
  
エクスポートのみ対応です!!
•  https://addons.mozilla.org/ja/firefox/addon/selenium-­‐ide-­‐php-­‐formatters/	
  
•  今から使うものでは無いです。	
  
Selenium	
  IDEと不遇のPHP
•  Selenium	
  WebDriver向けの	
  
エクスポートプラグインを作っている方がいます。	
  
•  https://github.com/suzuki/PHP-­‐Formatter-­‐PHPUnit_Selenium2	
  
•  やさしい世界	
  
Selenium	
  WebDriverと	
  
不遇のPHP
Selenium	
  WebDriverと不遇のPHP
•  デモやります!	
  
•  まずJavaを入れます	
  
•  次にJarファイルを入れます	
  
•  これはPHPer向けの手順です	
  
•  Selenium	
  WebDriver	
  を使うために、
PHPUnit_Extensions_Selenium2TestCase	
  でコードを書いてみます。	
  
Selenium	
  WebDriverと不遇のPHP
•  _人人人人人人人人人人人人人人人人_

> 不遇とは           <

> 才能を持ちながらも      <

> めぐりあわせが悪くて     <

> 世間に認められないことである <

 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
Selenium	
  WebDriverと不遇のPHP
Selenium	
  WebDriverと不遇のPHP
•  「実装しているのはその一部だけです」	
  
•  (゚ε゚)キニシナイ!!	
  	
  
•  必要な部分はちゃんと実装されてるっぽいです。	
  
•  ちゃんとチェックしてませんが…	
  
•  他言語でも、必ずしもすべてのWebDriver	
  APIに	
  
対応しているわけではないです。	
  
•  ちゃんとチェックしてませんが…	
  
•  Selenium	
  WebDriver向けのAPIドキュメントが無い!!	
  
•  サンプルコードを見てね!の文化圏	
  
•  https://github.com/giorgiosironi/phpunit-­‐selenium/blob/master/Tests/Selenium2TestCaseTest.php	
  
•  がんばるしかないのか?	
  
Selenium	
  WebDriverと不遇のPHP
•  PHP向けの実装は他にもあります!	
  
•  Facebook謹製のphp-­‐webdriver	
  
•  https://github.com/facebook/php-­‐webdriver	
  
•  他言語の実装とコードの書き方が近いので、	
  
こちらの方がわかりやすいかも?	
  
•  ドキュメントが充実しています!	
  
Selenium	
  WebDriverと不遇のPHP
•  不遇をざっくり乗り越えるために、	
  
Seleniumのラッパーを活用するのも良いでしょう。	
  
•  CodeceptionのAcceptance	
  Testは、	
  
中身がSelenium	
  WebDriverです。	
  
•  http://codeception.com/	
  
•  なんだか良い感じのテストコードになります。	
  
ご静聴	
  
ありがとうございました。

More Related Content

What's hot

Nespのコード生成
Nespのコード生成Nespのコード生成
Nespのコード生成Kouji Matsui
 
〜laravel で学ぶ MVC
 〜laravel で学ぶ MVC 〜laravel で学ぶ MVC
〜laravel で学ぶ MVCmikakane
 
それPhpStormで出来るよ #phpstudy
それPhpStormで出来るよ #phpstudyそれPhpStormで出来るよ #phpstudy
それPhpStormで出来るよ #phpstudy晃 遠山
 
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―shinjiigarashi
 
メタプログラミングでExcel仕様書よさらば
メタプログラミングでExcel仕様書よさらばメタプログラミングでExcel仕様書よさらば
メタプログラミングでExcel仕様書よさらばKouji Matsui
 
PHPから離れて感じるPHPの良さ
PHPから離れて感じるPHPの良さPHPから離れて感じるPHPの良さ
PHPから離れて感じるPHPの良さShinichi Takahashi
 
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情Junichi Ishida
 
2011 PHPカンファレンス関西 懇親会LT
2011 PHPカンファレンス関西 懇親会LT2011 PHPカンファレンス関西 懇親会LT
2011 PHPカンファレンス関西 懇親会LTTakako Miyagawa
 
勉強会用資料:Javaアプリ作成
勉強会用資料:Javaアプリ作成勉強会用資料:Javaアプリ作成
勉強会用資料:Javaアプリ作成ssuser331f24
 
Async deepdive before de:code
Async deepdive before de:codeAsync deepdive before de:code
Async deepdive before de:codeKouji Matsui
 
3分で作る Kotlin Friendly な API
3分で作る Kotlin Friendly な API3分で作る Kotlin Friendly な API
3分で作る Kotlin Friendly な APIHiroshi Kikuchi
 
0から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013
0から学んだポストモダンPerl @ YAPC::Asia Tokyo 20130から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013
0から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013Tasuku Suenaga
 
Perl Beginners #7 おとなのWAF
Perl Beginners #7 おとなのWAF Perl Beginners #7 おとなのWAF
Perl Beginners #7 おとなのWAF Munenori Sugimura
 
PHPerがgolangでもがいてる話@第1回 関西Golang勉強会
PHPerがgolangでもがいてる話@第1回 関西Golang勉強会PHPerがgolangでもがいてる話@第1回 関西Golang勉強会
PHPerがgolangでもがいてる話@第1回 関西Golang勉強会Keisuke Utsumi
 
Codeigniter3フレームアップデート
Codeigniter3フレームアップデートCodeigniter3フレームアップデート
Codeigniter3フレームアップデートtomohiro kitaura
 
C#でわかる こわくないMonad
C#でわかる こわくないMonadC#でわかる こわくないMonad
C#でわかる こわくないMonadKouji Matsui
 
3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみたYasushi Kato
 
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部Masahiro Wakame
 

What's hot (20)

Nespのコード生成
Nespのコード生成Nespのコード生成
Nespのコード生成
 
〜laravel で学ぶ MVC
 〜laravel で学ぶ MVC 〜laravel で学ぶ MVC
〜laravel で学ぶ MVC
 
それPhpStormで出来るよ #phpstudy
それPhpStormで出来るよ #phpstudyそれPhpStormで出来るよ #phpstudy
それPhpStormで出来るよ #phpstudy
 
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
 
メタプログラミングでExcel仕様書よさらば
メタプログラミングでExcel仕様書よさらばメタプログラミングでExcel仕様書よさらば
メタプログラミングでExcel仕様書よさらば
 
PHPから離れて感じるPHPの良さ
PHPから離れて感じるPHPの良さPHPから離れて感じるPHPの良さ
PHPから離れて感じるPHPの良さ
 
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
 
2011 PHPカンファレンス関西 懇親会LT
2011 PHPカンファレンス関西 懇親会LT2011 PHPカンファレンス関西 懇親会LT
2011 PHPカンファレンス関西 懇親会LT
 
勉強会用資料:Javaアプリ作成
勉強会用資料:Javaアプリ作成勉強会用資料:Javaアプリ作成
勉強会用資料:Javaアプリ作成
 
jQuery 対応ライブラリと TypeScript
jQuery 対応ライブラリと TypeScriptjQuery 対応ライブラリと TypeScript
jQuery 対応ライブラリと TypeScript
 
Async deepdive before de:code
Async deepdive before de:codeAsync deepdive before de:code
Async deepdive before de:code
 
3分で作る Kotlin Friendly な API
3分で作る Kotlin Friendly な API3分で作る Kotlin Friendly な API
3分で作る Kotlin Friendly な API
 
0から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013
0から学んだポストモダンPerl @ YAPC::Asia Tokyo 20130から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013
0から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013
 
Perl Beginners #7 おとなのWAF
Perl Beginners #7 おとなのWAF Perl Beginners #7 おとなのWAF
Perl Beginners #7 おとなのWAF
 
PHPerがgolangでもがいてる話@第1回 関西Golang勉強会
PHPerがgolangでもがいてる話@第1回 関西Golang勉強会PHPerがgolangでもがいてる話@第1回 関西Golang勉強会
PHPerがgolangでもがいてる話@第1回 関西Golang勉強会
 
Codeigniter3フレームアップデート
Codeigniter3フレームアップデートCodeigniter3フレームアップデート
Codeigniter3フレームアップデート
 
C#でわかる こわくないMonad
C#でわかる こわくないMonadC#でわかる こわくないMonad
C#でわかる こわくないMonad
 
H2O and php
H2O and phpH2O and php
H2O and php
 
3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた
 
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
 

Similar to PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9

フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由Kenichi Mukai
 
初心者による初心者のためのRPA入門 ~Seleniumを使用したWebブラウザ操作の自動化~
初心者による初心者のためのRPA入門 ~Seleniumを使用したWebブラウザ操作の自動化~初心者による初心者のためのRPA入門 ~Seleniumを使用したWebブラウザ操作の自動化~
初心者による初心者のためのRPA入門 ~Seleniumを使用したWebブラウザ操作の自動化~ceres-inc
 
Composerはじめました
ComposerはじめましたComposerはじめました
ComposerはじめましたTakashi Nojima
 
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudyライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudyKenichi Mukai
 
20111029 rubyon php
20111029 rubyon php20111029 rubyon php
20111029 rubyon phpdo_aki
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境Hisao Soyama
 
PHP conference kansai2018_ishihara
PHP conference kansai2018_ishiharaPHP conference kansai2018_ishihara
PHP conference kansai2018_ishiharaishihara_yuki
 
PHP-MLを使用して気軽に機械学習にトライしてみる
PHP-MLを使用して気軽に機械学習にトライしてみるPHP-MLを使用して気軽に機械学習にトライしてみる
PHP-MLを使用して気軽に機械学習にトライしてみるRyo Shibayama
 
Soft layer APIの使い方と実装のポイント
Soft layer APIの使い方と実装のポイントSoft layer APIの使い方と実装のポイント
Soft layer APIの使い方と実装のポイントShuichi Yukimoto
 
PHP でも活用できる Makefile
PHP でも活用できる MakefilePHP でも活用できる Makefile
PHP でも活用できる MakefileShohei Okada
 
【祝9周年】第79回 PHP勉強会プレゼン資料:PHP向けフレームワークの「Risoluto」について
【祝9周年】第79回 PHP勉強会プレゼン資料:PHP向けフレームワークの「Risoluto」について【祝9周年】第79回 PHP勉強会プレゼン資料:PHP向けフレームワークの「Risoluto」について
【祝9周年】第79回 PHP勉強会プレゼン資料:PHP向けフレームワークの「Risoluto」についてYuta Hayakawa
 
PHPやVBAでMovable Typeを操作しようData API Library for PHP/VBAのご紹介
PHPやVBAでMovable Typeを操作しようData API Library for PHP/VBAのご紹介PHPやVBAでMovable Typeを操作しようData API Library for PHP/VBAのご紹介
PHPやVBAでMovable Typeを操作しようData API Library for PHP/VBAのご紹介Hajime Fujimoto
 
⑮jQueryをおぼえよう!その1
⑮jQueryをおぼえよう!その1⑮jQueryをおぼえよう!その1
⑮jQueryをおぼえよう!その1Nishida Kansuke
 
PHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作ったPHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作ったHironobu Saitoh
 
Phpでアプリケーションサーバー
PhpでアプリケーションサーバーPhpでアプリケーションサーバー
Phpでアプリケーションサーバーk-motoyan
 
5分でわかるphalcon php
5分でわかるphalcon php5分でわかるphalcon php
5分でわかるphalcon phpYusaku Kinoshita
 
5分でわかるPhalconPHP
5分でわかるPhalconPHP5分でわかるPhalconPHP
5分でわかるPhalconPHPShohei Tai
 

Similar to PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9 (20)

フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由
 
初心者による初心者のためのRPA入門 ~Seleniumを使用したWebブラウザ操作の自動化~
初心者による初心者のためのRPA入門 ~Seleniumを使用したWebブラウザ操作の自動化~初心者による初心者のためのRPA入門 ~Seleniumを使用したWebブラウザ操作の自動化~
初心者による初心者のためのRPA入門 ~Seleniumを使用したWebブラウザ操作の自動化~
 
Composerはじめました
ComposerはじめましたComposerはじめました
Composerはじめました
 
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudyライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
 
20111029 rubyon php
20111029 rubyon php20111029 rubyon php
20111029 rubyon php
 
Phpのはなし
PhpのはなしPhpのはなし
Phpのはなし
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
 
PHP conference kansai2018_ishihara
PHP conference kansai2018_ishiharaPHP conference kansai2018_ishihara
PHP conference kansai2018_ishihara
 
社内Chef勉強会
社内Chef勉強会社内Chef勉強会
社内Chef勉強会
 
PHP-MLを使用して気軽に機械学習にトライしてみる
PHP-MLを使用して気軽に機械学習にトライしてみるPHP-MLを使用して気軽に機械学習にトライしてみる
PHP-MLを使用して気軽に機械学習にトライしてみる
 
Soft layer APIの使い方と実装のポイント
Soft layer APIの使い方と実装のポイントSoft layer APIの使い方と実装のポイント
Soft layer APIの使い方と実装のポイント
 
PHP でも活用できる Makefile
PHP でも活用できる MakefilePHP でも活用できる Makefile
PHP でも活用できる Makefile
 
【祝9周年】第79回 PHP勉強会プレゼン資料:PHP向けフレームワークの「Risoluto」について
【祝9周年】第79回 PHP勉強会プレゼン資料:PHP向けフレームワークの「Risoluto」について【祝9周年】第79回 PHP勉強会プレゼン資料:PHP向けフレームワークの「Risoluto」について
【祝9周年】第79回 PHP勉強会プレゼン資料:PHP向けフレームワークの「Risoluto」について
 
PHPやVBAでMovable Typeを操作しようData API Library for PHP/VBAのご紹介
PHPやVBAでMovable Typeを操作しようData API Library for PHP/VBAのご紹介PHPやVBAでMovable Typeを操作しようData API Library for PHP/VBAのご紹介
PHPやVBAでMovable Typeを操作しようData API Library for PHP/VBAのご紹介
 
第1回勉強会
第1回勉強会第1回勉強会
第1回勉強会
 
⑮jQueryをおぼえよう!その1
⑮jQueryをおぼえよう!その1⑮jQueryをおぼえよう!その1
⑮jQueryをおぼえよう!その1
 
PHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作ったPHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作った
 
Phpでアプリケーションサーバー
PhpでアプリケーションサーバーPhpでアプリケーションサーバー
Phpでアプリケーションサーバー
 
5分でわかるphalcon php
5分でわかるphalcon php5分でわかるphalcon php
5分でわかるphalcon php
 
5分でわかるPhalconPHP
5分でわかるPhalconPHP5分でわかるPhalconPHP
5分でわかるPhalconPHP
 

PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9