
私はクライアントからサーバー内のブラウザを自動化するために Selenium を使用していますが、起動時にサーバーが Selenium を自動的に実行するようにしたいと考えています。
/etc/init には 3 つのファイルがあります。
プロキシサーバー.conf:
respawn
start on runlevel [23]
script
exec java -jar selenium-server-standalone-2.20.0.jar -role hub -port 1111
end script
プロキシサーバー2.confそしてプロキシサーバー3.confこれらは同じもので、「スクリプト」の内容のみを変更します。
exec java -Dwebdriver.chrome.driver=/home/marco/selenium-client/chromedriver -jar selenium-server-standalone-2.20.0.jar -role node -port 2222 -hub http://192.168.1.12:1111 -browserName=chrome,maxInstances=5
この方法で起動時にこのコマンドを実行すると、クライアントで Selenium を実行するときに次のエラーが発生します。
Exception in thread "main" org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.
しかし、/etc/init で使用するのと同じコマンドをターミナルで実行すると、すべて完璧に動作します... なぜでしょうか?
最後に、以下を実行します:
ps aux | grep selenium
起動時にスクリプトを実行すると、次のメッセージが表示されます。
root 746 0.0 12.1 677080 124468 ? Ssl Apr23 8:10 java -Dwebdriver...
root 749 0.0 12.7 685552 130280 ? Ssl Apr23 8.09 java -Dwebdriver...
root 755 0.0 1.9 680168 20240 ? Ssl Apr23 8.08 java -jar selenium...
ターミナルで実行すると、次のようになります:
1000 9764 6.6 3.0 679236 30992 pts/0 Sl+ 10.33 0:01 java -jar...
1000 9783 14.0 3.0 677112 31752 pts/1 Sl+ 10.33 0:01 java -Dwebdriver...
1000 9792 12.6 3.0 675472 30944 pts/2 Sl+ 10.34 0:01 java -Dwebdriver...
なぜ動作しないのでしょうか?
ありがとう!!
答え1
おそらく、init で作成されたプロセスには、ターミナルで実行するときに使用する環境変数がいくつか欠けています (DISPLAY
これは、Selenium がブラウザー ウィンドウをどのディスプレイで開くかを知るために必要となる変数です)。
これを init スクリプトに追加してみてください:
env DISPLAY=:0.0
詳細は新興料理本。