回答:
あなたが探しているのは ヘッドレスブラウザー。
はい、FirefoxでSeleniumをヘッドレスで実行することは可能です。これはあなたがフォローできる投稿です。
Xvfbを設定するための概要手順は次のとおりです
#install Xvfb
sudo apt-get install xvfb
#set display number to :99
Xvfb :99 -ac &
export DISPLAY=:99
#you are now having an X display by Xvfb
Xvfb
手順は、Selenium(geckodriver
パス上に存在する必要がある)のインストールと構成ではなく、を使用して仮想ディスプレイを作成するためのものです。
subprocess.Popen('Xvfb...')
またはで実行できますがos.system('Xvfb...')
、Webドライバーをインポートする前に必ず実行してください。
Chromeにヘッドレスモードが追加されました:
op = webdriver.ChromeOptions()
op.add_argument('headless')
driver = webdriver.Chrome(options=op)
はい。HTMLUnitDriver
代わりにFirefoxDriver
、webdriverの起動中に使用できます。これはヘッドレスブラウザーのセットアップです。詳細はこちら。
ヘッドレスブラウザーのサポートが必要な場合は、採用できる別のアプローチがあります。
https://github.com/detro/ghostdriver
これはSelenium Conferenceで発表され、まだ開発中です。ブラウザとしてPhantomJSを使用し、HTMLUnitDriverよりもはるかに優れています。スクリーンショットはまだありませんが、まだ活発に開発されています。
オプションは次のように使用することですpyvirtualdisplay
:
from pyvirtualdisplay import Display
display = Display(visible=0, size=[800, 600])
display.start()
#do selenium job here
display.close()
短いバージョンは次のとおりです。
with Display() as display:
# selenium job here
これは一般にのPythonカプセル化でありxvfb
、なんとなく便利です。
けれどもところで、PhantomJS
あなたはそれを使用する場合は、ヘッドレスブラウザと窓なしが開放されると、と思われるPhantomJS
、まだ必要な作業にGUI環境を。
ヘッドレスモード(パテ接続コンソール)のPhantomJS()
代わりに使用するとFirefox()
、エラーコード-6 が表示されます。ただし、デスクトップ環境ではすべて問題ありません。
更新:ヘッドレスFirefoxを実行するためにXVFBは必要ありません。Linux上のFirefox v55 +およびWindows / Mac上のFirefox v56 +がヘッドレス実行をサポートするようになりました。
ここにいくつかの使用方法のドキュメントを追加しました:
https://developer.mozilla.org/en-US/Firefox/Headless_mode#Selenium_in_Java
もう1つのオプションはGhostDriverで、これは現在WebDriverで正式にサポートされています:Ghostdriver実際のパフォーマンスの向上
HtmlUnitDriver Webクライアントはシングルスレッドであり、GhostdriverはWebDriverになるための機能の40%にすぎないことに注意してください。
それにもかかわらず、Ghostdriverはテストに対して適切に実行され、WebDriverハブに接続するのに問題があります。
多分あなたはあなたのウィンドウサイズの寸法を設定する必要があります。と同じように:
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
options.add_argument('--window-size=1920x1080');
browser = webdriver.Chrome(options=options,executable_path = './chromedriver')
それでも機能しない場合は、ウィンドウサイズのサイズを大きくしてみてください。
コンテナ化されたFirefoxをインストールして実行します。
docker pull selenium/standalone-firefox
docker run --rm -d -p 4444:4444 --shm-size=2g selenium/standalone-firefox
を使用して接続webdriver.Remote
:
driver = webdriver.Remote('http://localhost:4444/wd/hub', DesiredCapabilities.FIREFOX)
driver.set_window_size(1280, 1024)
driver.get('https://www.google.com')