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」と入力されていた。

ページの開き方、フォームに入力と入力した内容という最低限のテストがわかったので、

ぼちぼちテストコードを書き直していこう。