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();