Seleniumとphp-webdriverでUIテストの自動化で
Selenium、Chromeドライバとphp-webdriverをインストールした。
今回は基本的な動作分を確認
ワークスペースが~/workspace/soycms/で、
テストコードはsoycmsディレクトリ以下にtestというディレクトリを作成して、
テストコードを~/workspace/soycms/test/test.phpにしてファイルを作成してみる。
※soycmsディレクトリ内にSOY CMSをインストール済み
test.phpに下記のように記述し、試しに実行してみる。
<?php //composerの実行の際に生成されたvendorディレクトリを調べて指定する require_once dirname(dirname(__FILE__)) . '/vendor/autoload.php'; use Facebook\WebDriver\Remote\RemoteWebDriver; use Facebook\WebDriver\Remote\DesiredCapabilities; use Facebook\WebDriver\WebDriverExpectedCondition; use Facebook\WebDriver\WebDriverBy; //SOY CMSの管理画面のURL $adminUrl = "http://localhost/cms/admin"; //SeleniumのホストのURL $host = "http://localhost:4444/wd/hub"; //Chromeドライバを登録 $driver = RemoteWebDriver::create($host, DesiredCapabilities::chrome()); //指定のURLのページを開く $driver->get($adminUrl);
端末を開き、test.phpを実行してみる。
cd ~/workspace/soycms/test php test.php
Chromiumが起動し、ログインフォームが表示された。
練習がてら、
ログインIDのフォームに値を入れて、入力したフォームの内容を確認するというコードを、
先程のコードの末尾に追加してみる。
//フォームのname属性の指定で取得 $element = $driver->findElement(WebDriverBy::name("Auth[name]")); //既にフォームに値が入力されている対策:フォームに入力された文字をクリアする $element->clear(); //ログインIDのフォームに「soycms」と打ち込む $element->sendKeys("soycms"); //ログインフォームに打ち込んだ値を取得する $value = $element->getAttribute("value"); echo $value;
このコードを実行してみると、
php test.php soycms
と表示され、
自動で起動されたChromiumの画面を確認してみると、
ログインIDのフォームに「soycms」と入力されていた。
ページの開き方、フォームに入力と入力した内容という最低限のテストがわかったので、
ぼちぼちテストコードを書き直していこう。