Facebookのphp-webdriverを使ってSelenium Server経由でブラウザを操作します。
Chrome
Selenium ServerでChromeをリモート操作する方法です。
-
Selenium Serverの用意
-
プログラム
以下を参考にSelenium Serverのインストールと起動を行います。
Selenium Serverが、ホストlocalhost、ポート4444(デフォルトのポート)で動作している状態で、以下のPHPプログラムを実行します。
このPHPプログラムは、Selenium Server経由でChromeを操作してYahooにアクセスします。 Yahooを開いたら、検索文字入力フィールドに"Selenium"を入力して検索ボタンをクリックして検索結果画面を表示します。
require_once(__DIR__ . '/../vendor/autoload.php');
use Facebook\WebDriver;
use Facebook\WebDriver\WebDriverExpectedCondition;
use Facebook\WebDriver\WebDriverBy;
use Facebook\WebDriver\Chrome\ChromeOptions;
use Facebook\WebDriver\Remote;
use Facebook\WebDriver\Remote\RemoteWebDriver;
use Facebook\WebDriver\Remote\DesiredCapabilities;
class Test {
// Selenium Serverの指定
private $host = 'http://localhost:4444/wd/hub';
public function run()
{
$caps = DesiredCapabilities::chrome();
$driver = RemoteWebDriver::create($this->host, $caps);
// ブラウザでのアクセス先を指定
$driver->get('https://www.yahoo.co.jp');
// id="subfooter"があるフッターが確認できるまで待つ。
$driver->wait(10,500)->until(
WebDriverExpectedCondition::presenceOfElementLocated(WebDriverBy::id('subfooter'))
);
// 検索文字入力フィールドヘフォーカスを移して文字列を入力する
$driver->findElement(WebDriverBy::id('srchtxt'))->click();
$driver->getKeyboard()->sendKeys("Selenium");
// 入力されたのを目で確認するため、2秒ほど待つ
sleep(2);
// type="submit"があるボタンをクリックして遷移する
$driver->findElement(WebDriverBy::cssSelector('input[type=submit]'))->click();
// ブラウザを閉じたい場合は、以下を有効とする。
//$driver->close();
}
}
$test = new Test();
$test->run();