---
slug: "ディスプレイが無いLinuxで、Firefox+SeleniumをPython上で起動して自動操作する"
title: "ディスプレイが無い Linux で、Firefox + Selenium を Python 上で起動して自動操作する"
description: "\n\n\nSelenium を、ヘッドレス Linux上で、Python から起動する方法です。"
url: "https://www.ytyng.com/blog/ディスプレイが無いLinuxで、Firefox+SeleniumをPython上で起動して自動操作する"
publish_date: "2015-08-11T02:06:09Z"
created: "2015-08-11T02:06:09Z"
updated: "2026-02-26T23:17:20.056Z"
categories: ["Python"]
keywords: ""
featured_image_url: "https://media.ytyng.com/resize/20230812/14461c5cd86f4a388423a6181eb0e5ce.png.webp?width=768"
has_video: false
has_music: false
video_urls: []
music_urls: []
lang: "ja"
---

# ディスプレイが無い Linux で、Firefox + Selenium を Python 上で起動して自動操作する

<div class="document">


<p>Selenium を、ヘッドレス Linux上で、Python から起動する方法です。</p>
<p>事前準備</p>
<pre class="literal-block">$ sudo apt-get install xvfb

$ pip install selenium

$ pip install pyvirtualdisplay
</pre>
<p>ディスプレイの代わりに、仮想フレームバッファの xvfb を使います。</p>
<p>それを Python から簡単に使えるようにするのが pyvirtualdisplay です。</p>
<p>Pythonコード</p>
<pre class="literal-block">from pyvirtualdisplay import Display
from selenium import webdriver

display = Display(visible=0, size=(800, 600))
display.start()

fx = webdriver.Firefox()
fx.get("http://example.com")
fx.save_screenshot("/tmp/webdriver-firefox-screenshot.png")

fx.close()
fx.quit()
display.stop()
</pre>
<p>Firefox で <a class="reference external" href="http://example.com">http://example.com</a> を開き、スクリーンショットを保存しています。</p>
<p>終了のさせ方が悪いと、xvfb や firefox がゾンビ化することがありますので、その場合は killall なんかで終了させると良いでしょう。</p>
<p>プロセスが残っているか確認</p>
<pre class="literal-block">$ ps -eafw|grep -i "firefox"
$ ps -eafw|grep "xvfb"
</pre>
<p>また、mac はディスプレイ付きで開発、Linux ではディスプレイ無しで起動させたい場合は</p>
<pre class="literal-block">import platform
use_virtual_display = platform.system() == 'Linux'
</pre>
<p>このように、platform.system() で比較すると比較的簡単にできると思います。</p>
</div>
