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

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

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

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

selenium

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

Q&A

1回答

1446閲覧

php + selenium + webdriver(chromedriver) を使用した際のエラーについて

ebsffzal

総合スコア107

PHP

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

selenium

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

0グッド

1クリップ

投稿2019/04/11 03:56

概要

こんにちは

件名についての質問です。

現在、サーバ上で動作するphpプログラムで、java + selenimu + webdriver + chromedriver を使った実装をしています。
その際にエラーが解決できない現象が起きていますので、質問させていただきます。

以下、やったとこと調べたことをまとめました。

###やったこと(サーバ上でのコマンド履歴)

■facebook/webdriverインストール
php composer.phar require facebook/webdriver

■seleniumインストール
wget http://selenium-release.storage.googleapis.com/2.48/selenium-server-standalone-2.48.2.jar

■javaインストール
sudo yum install -y java-1.8.0-openjdk

■xvfbインストール
sudo yum install -y xorg-x11-server-Xvfb firefox

■chromeインストール
yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
chmod u+x install_chrome.sh
./install_chrome.sh

■chromedriverインスト
wget http://chromedriver.storage.googleapis.com/2.20/chromedriver_linux64.zip
unzip chromedriver_linux64.zip

■日本語言語対応
yum -y groupinstall base "Development tools" --setopt=group_package_types=mandatory,default,optional

■bash
vi ~/.bash_profile
export DISPLAY=:3
source ~/.bash_profile

■実行
Xvfb :3 -screen 0 1024x768x24 &
java -jar selenium-server-standalone-2.48.2.jar

###上記の操作を行った後、下記のphpプログラムを実行

php

1<?php 2 3require_once 'vendor/autoload.php'; 4 5putenv("webdriver.chrome.driver=/var/www/html/selenium_test/chromedriver"); 6 7use Facebook\WebDriver\Remote\DesiredCapabilities; 8use Facebook\WebDriver\Remote\RemoteWebDriver; 9 10$host = 'http://localhost:4444/wd/hub'; 11 12$driver = RemoteWebDriver::create($host, DesiredCapabilities::chrome(), 5000); 13 14$url = 'https://xxxxxxxxxx/'; 15$driver->get($url); 16 17echo $driver->getTitle() . "\n"; 18 19?>

###起きているエラー

server

1Starting ChromeDriver 74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}) on port 6231 2Only local connections are allowed. 3Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code. 412:38:16.291 WARN - Exception thrown 5java.util.concurrent.ExecutionException: org.openqa.selenium.WebDriverException: java.lang.reflect.InvocationTargetException 6Build info: version: '2.48.2', revision: '41bccdd', time: '2015-10-09 19:59:12' 7System info: host: 'localhost.localdomain', ip: '127.0.0.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.10.0-957.10.1.el7.x86_64', java.version: '1.8.0_201' 8Driver info: driver.version: unknown 9 at java.util.concurrent.FutureTask.report(FutureTask.java:122) 10 at java.util.concurrent.FutureTask.get(FutureTask.java:192) 11 at org.openqa.selenium.remote.server.DefaultSession.execute(DefaultSession.java:183) 12 at org.openqa.selenium.remote.server.DefaultSession.<init>(DefaultSession.java:119) 13 at org.openqa.selenium.remote.server.DefaultSession.createSession(DefaultSession.java:95) 14 at org.openqa.selenium.remote.server.DefaultDriverSessions.newSession(DefaultDriverSessions.java:124) 15 at org.openqa.selenium.remote.server.handler.NewSession.handle(NewSession.java:58) 16 at org.openqa.selenium.remote.server.handler.NewSession.handle(NewSession.java:1) 17 at org.openqa.selenium.remote.server.rest.ResultConfig.handle(ResultConfig.java:111) 18 at org.openqa.selenium.remote.server.JsonHttpCommandHandler.handleRequest(JsonHttpCommandHandler.java:175) 19 at org.openqa.selenium.remote.server.DriverServlet.handleRequest(DriverServlet.java:202) 20 at org.openqa.selenium.remote.server.DriverServlet.doPost(DriverServlet.java:164) 21 at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) 22 at org.openqa.selenium.remote.server.DriverServlet.service(DriverServlet.java:130) 23 at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) 24 at org.openqa.jetty.jetty.servlet.ServletHolder.handle(ServletHolder.java:428) 25 at org.openqa.jetty.jetty.servlet.ServletHandler.dispatch(ServletHandler.java:680) 26 at org.openqa.jetty.jetty.servlet.ServletHandler.handle(ServletHandler.java:571) 27 at org.openqa.jetty.http.HttpContext.handle(HttpContext.java:1526) 28 at org.openqa.jetty.http.HttpContext.handle(HttpContext.java:1479) 29 at org.openqa.jetty.http.HttpServer.service(HttpServer.java:920) 30 at org.openqa.jetty.http.HttpConnection.service(HttpConnection.java:820) 31 at org.openqa.jetty.http.HttpConnection.handleNext(HttpConnection.java:986) 32 at org.openqa.jetty.http.HttpConnection.handle(HttpConnection.java:837) 33 at org.openqa.jetty.http.SocketListener.handleConnection(SocketListener.java:243) 34 at org.openqa.jetty.util.ThreadedServer.handle(ThreadedServer.java:358) 35 at org.openqa.jetty.util.ThreadPool$PoolThread.run(ThreadPool.java:537) 36Caused by: org.openqa.selenium.WebDriverException: java.lang.reflect.InvocationTargetException 37Build info: version: '2.48.2', revision: '41bccdd', time: '2015-10-09 19:59:12' 38System info: host: 'localhost.localdomain', ip: '127.0.0.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.10.0-957.10.1.el7.x86_64', java.version: '1.8.0_201' 39Driver info: driver.version: unknown 40 at org.openqa.selenium.remote.server.DefaultDriverProvider.callConstructor(DefaultDriverProvider.java:113) 41 at org.openqa.selenium.remote.server.DefaultDriverProvider.newInstance(DefaultDriverProvider.java:97) 42 at org.openqa.selenium.remote.server.DefaultDriverFactory.newInstance(DefaultDriverFactory.java:60) 43 at org.openqa.selenium.remote.server.DefaultSession$BrowserCreator.call(DefaultSession.java:222) 44 at org.openqa.selenium.remote.server.DefaultSession$BrowserCreator.call(DefaultSession.java:1) 45 at java.util.concurrent.FutureTask.run(FutureTask.java:266) 46 at org.openqa.selenium.remote.server.DefaultSession$1.run(DefaultSession.java:176) 47 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 48 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 49 at java.lang.Thread.run(Thread.java:748) 50Caused by: java.lang.reflect.InvocationTargetException 51 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 52 at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 53 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 54 at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 55 at org.openqa.selenium.remote.server.DefaultDriverProvider.callConstructor(DefaultDriverProvider.java:103) 56 ... 9 more 57Caused by: org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: exited abnormally 58 (unknown error: DevToolsActivePort file doesn't exist) 59 (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.) 60 (Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Linux 3.10.0-957.10.1.el7.x86_64 x86_64) (WARNING: The server did not provide any stacktrace information) 61Command duration or timeout: 1.07 seconds 62Build info: version: '2.48.2', revision: '41bccdd', time: '2015-10-09 19:59:12' 63System info: host: 'localhost.localdomain', ip: '127.0.0.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.10.0-957.10.1.el7.x86_64', java.version: '1.8.0_201' 64Driver info: org.openqa.selenium.chrome.ChromeDriver 65 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 66 at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 67 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 68 at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 69 at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206) 70 at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158) 71 at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:647) 72 at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:247) 73 at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:129) 74 at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:142) 75 at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:170) 76 at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:138) 77 ... 14 more 7812:38:16.299 WARN - Exception: unknown error: Chrome failed to start: exited abnormally 79 (unknown error: DevToolsActivePort file doesn't exist) 80 (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.) 81 (Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Linux 3.10.0-957.10.1.el7.x86_64 x86_64) (WARNING: The server did not provide any stacktrace information) 82Command duration or timeout: 1.07 seconds 83Build info: version: '2.48.2', revision: '41bccdd', time: '2015-10-09 19:59:12' 84System info: host: 'localhost.localdomain', ip: '127.0.0.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.10.0-957.10.1.el7.x86_64', java.version: '1.8.0_201' 85Driver info: org.openqa.selenium.chrome.ChromeDriver

###調べたこと(対応したこと)
・javaの起動時に「-Dwebdriver.chrome.driver=xxxx」をつけた
・同じく起動時に「-enablePassThrough false」をつけた
・Selenium Standalone Serverを最新版(https://www.seleniumhq.org/download/)にした
・selenium-server-standaloneのバージョンをあげた(そもそも起動しなかった)

###現状
・どの方法を試しても、エラー内容は変わらず。
・「Chrome failed to start: exited abnormally」ここも原因のひとつかも(?)
・「Driver info: driver.version: unknown」という箇所が原因かと思いますが、解決方法がわかりません。

有識者さまのお力を貸していただきたいと思い、質問させていただきました。

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

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

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

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

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

guest

回答1

0

phpwebdriverにて同様の現象が発生しました。
Driver info: driver.version: unknown

こちらの対策ですが、optionsに幾つかの追加をすることで回避できるようです。

PHP

1$host = 'http://localhost:4444/wd/hub'; 2 $screenPath = '/var/www/html/screenshot.png'; 3 4 // ダウンロードしたchromedriverのパスを指定 5 $driverPath = realpath("/usr/local/bin/chromedriver"); 6 putenv("webdriver.chrome.driver=" . $driverPath); 7 8 // Chromeを起動するときのオプション指定用 9 $options = new ChromeOptions(); 10 11 // ヘッドレスで起動するように指定 12 $options->addArguments(['--headless']); 13 14 // 以下の2行を追記すると Driver info: driver.version: unknown が回避される 15 $options->addArguments(['--no-sandbox']); 16 $options->addArguments(['--disable-dev-shm-usage']); 17 18 $capabilities = DesiredCapabilities::chrome(); 19 $capabilities->setCapability(ChromeOptions::CAPABILITY, $options); 20 21 $driver = RemoteWebDriver::create($host, $capabilities, 180 * 1000, 180 * 1000); //Connection timeout & Request timeout in milliseconds 22 23 $driver->get('https://google.com'); 24 25 // スクリーンショットを保存して終了 26 $driver->takeScreenshot($screenPath); 27 $driver->close();

投稿2019/09/24 05:24

Koromaru

総合スコア21

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問