質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

解決済

2回答

5637閲覧

ChromeDriverをサーバー上で使用する方法がわかりません。

yayak

総合スコア66

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2019/08/10 07:39

「ユーザーがWEB上で特定の動作をしたら、特定のページのスクリーンショットを撮る」ということを実現したいと思っています。

http://www.ajisaba.net/develop/selenium/client_php_webdriver_chrome.html#PREPARY
の記事を参考にしてみたのですが、

記事中の下記の部分を見て、頭がショートしてしまいました。
========================
・Chromeをリモート操作するため、ChromeDriverをダウンロードします。
ここではCentOSを使用するので、最新バージョンのLinux用 chromedriver_linux64.zip をダウンロードして解凍します。
→意味がわかりませんでした。本当に恥ずかしい。。

・Chromeがインストールされていない場合、以下のページを参考にインストールします。
→意味がわかりませんでした。ローカル環境で実行する前提だからなのかなあと予想。レンタルサーバー上で実行する場合も必要なのかなあ、と悩んでいる知識レベル。

・facebook/php-webdriverがインストールされていない場合、インストールします。
→※最近composerの使い方を学び、ここの部分だけはできています。

========================

私はレンタルサーバーのxserverを使用しているのですが、以下のコードを動かすために、
上記で出てくる「ChromeDriver」および「Chrome」を、サーバー上にインストールしなければならないのでしょうか?

もし、お分かりなる方がいらっしゃいましたら、道しるべを頂けましたら幸いに存じます。

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

ps
勉強すればするほど知らない知識が出てきて、涙が出そうです、、

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

参考サイトによるとChromeをyum で入れると書いてあるのでレンタルサーバーで行うのは厳しいかと思います。
(Chromeのバイナリ版だけ移植してユーザー権限で動かせられればいけそうですが、知識的に難しいでしょう)

CrhomeDriverはChromeをプログラムから操作するためのツールで、別途サーバー上にChromeをインストールする事が必須です

「ユーザーがWEB上で特定の動作をしたら、特定のページのスクリーンショットを撮る」ということを実現したいと思っています。

こういう目的であれば、スクリーンショットを取る系のAPIを使う方が手軽ですしレンタルサーバでも稼働します

投稿2019/08/10 08:20

mikkame

総合スコア5036

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yayak

2019/08/10 08:41

なるほどです( ;∀;) レンタルサーバーにお世話になっている間はAPIに頼ろうと思います>< とてもわかりやすかったです、いつも本当に有難うございます<(_ _)>
guest

0

ベストアンサー

ここ、結構勘違いされている方が多いのですが、Composerの実行によりライブラリをインストール・・・
と思いきや実際は「必要なプログラムファイルをダウンロードしているだけ」だったりします。

なので、ローカルでもし必要なソースがComposerでダウンロードできているのであれば、
vendorディレクトリごとサーバーにアップロードすれば良いだけだったりします。

※ただし、ローカルでパッケージを更新をした場合は毎回vendorディレクトリごと総入れ替えしなければなりません。

レンタルサーバーだと制限があったりするのでComposerが使えるかどうかは別途調べてください(無料だと使えないところが多いです)

ただ、「スクリーンショットをとる」という要件だとChrome for Linux は必要そうには思います(Selenium使ったことあるのPHPじゃなくて別の言語だったもので)
当該PHPを自分でWebブラウザで実行するのでしたら不要には思います。

当該ページでは下記のように「コマンドライン実行でSeleniumを起動する」という前提であるためChrome for Linuxを導入しているように思います。

php test_client.php

レンタルサーバーに導入できるかはわかりませんね。
Composerは可能としてもChromeはどうなんだろう。サーバー運営に問い合わせてみてください。

投稿2019/08/10 07:54

編集2019/08/10 08:00
m.ts10806

総合スコア80765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yayak

2019/08/10 08:43 編集

本当に自身の知識不足を痛感するばかりです、、 おそらくクロームのインストールが自身ではできなそうなので、今回は別の方法でスクリーンショットを実現しようと思います! いつも励まされています。本当に有難うございます<(_ _)>
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問