1. 準備

FacebookのWebDriverクライアントライブラリを使った、Chromeのリモート操作について。

準備

Chromeをリモート操作するため、ChromeDriverをダウンロードします。 ここではCentOSを使用するので、最新バージョンのLinux用 chromedriver_linux64.zip をダウンロードして解凍します。

Chromeがインストールされていない場合、以下のページを参考にインストールします。

facebook/php-webdriverがインストールされていない場合、以下のページを参考にインストールします。

  • ヘッドレスChromeの操作テスト

  • PHPプログラムでChromeDriverを使って、ヘッドレスのChromeをリモート操作してテストします。 OSはCentOS7.2で、Selenium Serverは使用しません。

    <?php
    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\Chrome\ChromeDriver;
    use Facebook\WebDriver\Remote\DesiredCapabilities;
    
    class Test {
        public function run()
        {
            $screenPath = '/vagrant/screenshot.png';
    
            // ダウンロードしたchromedriverのパスを指定
            $driverPath = realpath(__DIR__ . "/chromedriver");
            putenv("webdriver.chrome.driver=" . $driverPath);
    
            // Chromeを起動するときのオプション指定用
            $options = new ChromeOptions();
    
            // ヘッドレスで起動するように指定
            $options->addArguments(['--headless']);
    
            $caps = DesiredCapabilities::chrome();
            $caps->setCapability(ChromeOptions::CAPABILITY, $options);
    
            $driver = ChromeDriver::start($caps);
    
            $driver->get('http://www.yahoo.co.jp/');
            
            // スクリーンショットを保存
            $driver->takeScreenshot($screenPath);
    
            // ブラウザを閉じる
            $driver->close();
        }
    }
    
    $t = new Test();
    $t->run();

    これをtest_client.phpと保存した場合、以下のように実行します。

    $ php test_client.php
    PHP Notice:  Constant CURLOPT_CONNECTTIMEOUT_MS already defined in /home/vagrant/work/selenium/vendor/facebook/webdriver/lib/Net/URLChecker.php on line 70
    PHP Notice:  Constant CURLOPT_CONNECTTIMEOUT_MS already defined in /home/vagrant/work/selenium/vendor/facebook/webdriver/lib/Net/URLChecker.php on line 70
    
    $
    Noticeのメッセージが表示されますが、無視します。 正常ならスクリーンショットのファイルが作成されていますので、その画像ファイルを確認します。 Yahooトップページの画像になっていればOKです。