1. Chrome

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