
php-webdriverで指定のフォームに値を入力してみる
前回、Selenium + php-webdriverでSOY CMSのログイン画面でログインIDのフォームに値を入れ、
フォームの値を取り出して端末上に書き出す
という処理を書いてみた。
今回はログインIDとパスワードを入力して、
ログインボタンを押してログインを試してみる。
実際のコードは下記の通り、
※管理画面へログインできるアカウントをID、Pw共に「soycms」とします
<?php
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";
$driver = RemoteWebDriver::create($host, DesiredCapabilities::chrome());
$driver->get($adminUrl);
//ログインIDのフォームにsoycmsと入力する
$element = $driver->findElement(WebDriverBy::name("Auth[name]"));
$element->clear();
$element->sendKeys("soycms");
//パスワードのフォームにsoycmsと入力する
$element = $driver->findElement(WebDriverBy::name("Auth[password]"));
$element->clear();
$element->sendKeys("soycms");
//ログインボタンのname属性を指定して要素を取得した直後にsubmitする
$driver->findElement(WebDriverBy::name("ログイン"))->submit();
実行後に自動で起動したブラウザを確認すると、

ようこそSOY CMSへ!の画面が表示されたので、
無事にログインできたことになります。
ログインボタンをクリックする時、
ログインボタンは<input type="submit">で設置するので、
入力用の<input type="text">と同じようにgetElement()メソッドでオブジェクトを取得して、
sumit()メソッドを実行すれば、submitのオブジェクトを押したことになる。
php-webdriverではフォームもボタンもひっくるめて、
DOMの要素はgetElementで取得するということなのね。





