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で取得するということなのね。