Selenium + Chrome の環境が一瞬で構築できたというアレ。
前提
さて Selenium を試してみようか!と思った時点で、こんな環境でした。
ブラウザのオートメーションと言えば昔は…
余談ですが、昔やったときは VB かなんかで IE を CreateObject して、なんか色々頑張ってやる感じで、まぁブラウザの操作自動化しても良いけどクソ面倒くさいよ。むしろ AutoHotKey とかでキー操作を自動化したほうが早いわ。ぐらいに思っていましたが…、時代は大分前進していたようで。Selenium で Chrome を自在に動かす。しかも一瞬で。
さて、早速準備ですがやることはこれだけです。- PHP 用ドライバを DL
- Windows 用 Chrome ドライバを DL
PHP 用ドライバを DL
composer.json にこう書いてインストールするだけです。
{ "require": { "facebook/webdriver": "1.5.*" } }
※最新版の Version は GitHub で確認してください
composer install以上。
Windows 用 Chrome ドライバを DL
ここから「chromedriver_win32.zip」をダウンロードして解凍するだけです。
64bit 専用はないので、64bit でも 32bit 版で動かします。
linux と mac 版も置いてありありますね。
※最新版の Version はこちらで確認してください
64bit 専用はないので、64bit でも 32bit 版で動かします。
linux と mac 版も置いてありありますね。
※最新版の Version はこちらで確認してください
Selenium の Hello world
ここまでできたら、あとはソースがあれば動きます。
試しに Google で Hello world を検索して見ます。
ソースはこんな感じ。
hello_world.php
ソースはこんな感じ。
hello_world.php
<?php require_once './vendor/autoload.php'; use Facebook\WebDriver\Chrome\ChromeDriver; use Facebook\WebDriver\WebDriverExpectedCondition; use Facebook\WebDriver\WebDriverBy; function hello_world() { // 環境変数にドライバパスを設定 putenv('webdriver.chrome.driver=' . __DIR__ . '\chromedriver.exe'); // Chrome を起動してページ遷移する $driver = ChromeDriver::start(); $driver->get("https://www.google.co.jp/?q=helloworld"); // 【検索】ボタンを押下 $elem = $driver->findElement(WebDriverBy::name('btnK')); $elem->click(); sleep(3); $driver->close(); } hello_world();※ facebook webdriver の API 一覧はこちら
最終的なフォルダ構成は、こうなっています。
あとはコレを実行すると、、
php hello_world.php
ブラウザが立ち上がり…
検索結果のページが表示され…
3秒待機したら終了します。
はい、ここまで一瞬ですね。素晴らしい。
正直、こんなに簡単だとは思っていませんでした。
これで、ローカルでの自動化環境は整いました。
あとは API などを見ながら味付けしていく感じかと思います。
今回は、目的がローカル環境で達成できたので、 Selenium Server を使用していません。
次は、Selenium Server と組み合わせてみたいと思います。
以上。
補足
今回は facebook 製のを使いましたが、PHP の Web driver は公式では 3つ紹介されています。