centos7 でselenium+chromedriver+phpを動かす

centos7

こちらの記事のcentosバージョンです。

日本語フォントのインストール

キャプチャなどで日本語が文字化けしないようにフォントをインストール。

$ sudo yum install ipa-*-fonts

chromeのインストール

chromeのリポジトリ情報を登録して、インストールする。

$ sudo vi /etc/yum.repos.d/google-chrome.repo
[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/x86_64
enabled=1
gpgcheck=1
gpgkey=https://dl.google.com/linux/linux_signing_key.pub

$ sudo yum install google-chrome-stable
$ google-chrome -version
Google Chrome 89.0.4389.72 

chromedriverのインストール

chromedriverをインストールする。注意点はインストールしたchromeと同じバージョンを入れること。

$ wget https://chromedriver.storage.googleapis.com/89.0.4389.23/chromedriver_linux64.zip
$ unzip chromedriver_linux64.zip
$ sudo mv chromedriver /usr/local/bin/
$ chromedriver --version
ChromeDriver 89.0.4389.23 (61b08ee2c50024bab004e48d2b1b083cdbdac579-refs/branch-heads/4389@{#294})

Seleniumのインストール

$ wget https://selenium-release.storage.googleapis.com/3.141/selenium-server-standalone-3.141.59.jar
$ sudo cp selenium-server-standalone-3.141.59.jar /usr/local/bin/

javaが入っていない場合はjavaをイストールする。

$ sudo yum install java-latest-openjdk.x86_64
$ java -version
openjdk version "15.0.2" 2021-01-19
OpenJDK Runtime Environment 20.9 (build 15.0.2+7)
OpenJDK 64-Bit Server VM 20.9 (build 15.0.2+7, mixed mode, sharing)

起動してみる。

$ java -jar /usr/local/bin/selenium-server-standalone-3.141.59.jar &

composerのインストール

composerが入っていない場合はインストールする。入っている場合はここは不要。

$ yum install composer

php-webdriverのインストール

作業用ディレクトリを作成して、そこにphp-webdriverをインストールする。

$ mkdir sample
$ cd sample/
$ composer require php-webdriver/webdriver
Using version ^1.1 for php-webdriver/webdriver
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Installing php-webdriver/webdriver (1.1.3): Downloading (100%)         
php-webdriver/webdriver suggests installing phpdocumentor/phpdocumentor (2.*)
Writing lock file
Generating autoload files

動作確認のためサンプルコードを作成。

$ vi sample.php
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Facebook\WebDriver\Chrome\ChromeOptions;
use Facebook\WebDriver\Chrome\ChromeDriver;
use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Remote\RemoteWebDriver;
use Facebook\WebDriver\WebDriverExpectedCondition;
use Facebook\WebDriver\WebDriverBy;

$driverPath = realpath("/usr/local/bin/chromedriver");
putenv("webdriver.chrome.driver=" . $driverPath);

// chrome option
$options = new ChromeOptions();
$options->addArguments([
    'disable-infobars',
    '--headless',
    //'start-maximized',
    'window-size=1920,1600',
]);

$capabilitites = DesiredCapabilities::chrome();
$capabilitites->setCapability(ChromeOptions::CAPABILITY, $options);
$driver = ChromeDriver::start($capabilitites);

// googleのページ取得
$driver->get('https://www.google.co.jp/');
// 表示されるまで待つ
$driver->wait(2)->until(
    WebDriverExpectedCondition::presenceOfElementLocated(WebDriverBy::name('q'))
);

// フォームに文字列を入力して検索実行
$element = $driver->findElement(WebDriverBy::name('q'))
    ->sendKeys('うっかりさん 困った時の備忘録')
    ->submit();

// 表示されるまで待つ
$driver->wait(3)->until(WebDriverExpectedCondition::titleContains('うっかりさん'));

// キャプチャをとる
$file = "./sample.png";
$driver->takeScreenshot($file);

// ブラウザを閉じる
$driver->quit();

実行してみる。

$ php73 sample.php

キャプチャがとれていれば成功。

コメント

タイトルとURLをコピーしました