として開始されません。のPythonコンソールからOK webdriverをスクリプトが、私はセレンwebdriverをを使用してPythonスクリプトを実行する必要が成り上がりサービス
import platform
from selenium import webdriver
from pyvirtualdisplay import Display
driver = None
if platform.system() == 'Linux':
print("Initializing browser for chrome...")
DISPLAY = Display(visible=0, size=(800, 600))
DISPLAY.start()
print("Started display")
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--no-sandbox')
driver = webdriver.Chrome('/usr/local/bin/chromedriver', chrome_options=chrome_options)
print("Done init chrome")
connected = True
else:
try:
print("Starting firefox...")
driver = webdriver.Firefox()
connected = True
except:
print("Could not connect through firefox")
if driver:
print("driver ok")
driver.quit()
print("All ok")
スクリプトは、コンソールからOK実行します:
sudo ~/environments/scrapers/bin/python test_webdriver.py
Initializing browser for chrome...
Started display
Done init chrome
driver ok
All ok
しかし、成り上がりとexecのスタンザを使用して実行しようとする場合WebDriverExceptionエラーを与える:
Initializing browser for chrome...
Started display
...
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally
(Driver info: chromedriver=2.26.436382 (70eb799287ce4c2208441fc057053a5b07ceabac),platform=Linux 4.8.0-58-generic x86_64)
このような起動スクリプトに不在のパスを追加しました。
env PYTHON_HOME=/home/rsa-key-20161031/environments/scrapers
env PATH=/usr/local/bin:/usr/bin:$PYTHON_HOME:$PATH
env ENV=production
env DISPLAY=:10
chdir /home/user/project
console log
exec $PYTHON_HOME/bin/python test_webdriver.py
効果なし。エラーを検索してもこれに固有のものはありません。 この作業をどのように行うかについての洞察は非常に高く評価されます。
更新: 私の現在の解決策は、Xvfbを使用する際に問題がないと思われるので、Cronを使用することです。 Webdriverタスクをサービスとして実行することが可能かどうかを知りたいと思っています。私もリモートウェブドライバとしてSeleniumを使ってみましたが、同じ結果が得られませんでした(Chromeは仮想ディスプレイに接続できなくなった後に終了します)
Upstartには、Chromeを起動するX-Windowsセッションがありません。 Upstartやその他のLinuxサービス管理システム(systemd、sysVinit)は、GUIに依存するサービスで使用するようには設計されていません。 –
ありがとうございます。私がPyvirtualdisplay/start Xvfbを別のプロセス変更として使用するという事実は何ですか? –