Django Web サイトの一部として、Python の Selenium バインディングを使用してプログラムで Web サイトとやり取りしようとしています。
私の Selenium コードは Django Web サイトの一部として実行されるため、デフォルトでは (私の理解が正しければ)、ブラウザで使用できる表示はありません。したがって、Selenium コードを実行する前に、PyVirtualDisplay を使用して Xvfb を起動しようとしています。
これが私のコードです:
from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=False, size=(800, 600))
display.start()
browser = webdriver.Firefox()
自分のサーバー (Debian Squeeze、Python 2.6.6、Selenium 2.25、PyVirtualDisplay 0.1.0 を実行) に SSH で接続し、自分として Python コンソールを実行し、上記のコードを入力すると、正常に動作します。
ただし、Django サイトからそのコードを実行しようとしたりsu
、Python コンソールをwww-data
(Django が実行されているユーザーであると思われる) として実行しようとすると、次のエラーが発生します。
selenium.common.exceptions.WebDriverException: Message: 'The browser appears to have exited before we could connect. The output was:
(process:2963): Gtk-WARNING **: Locale not supported by C library.
Using the fallback 'C' locale.
Xlib: extension "RANDR" missing on display ":1082.0".
(firefox-bin:2963): libgnomevfs-WARNING **: Unable to create ~/.gnome2 directory: Permission denied
Could not create per-user gnome configuration directory `/var/www/.gnome2/\': Permission denied'
私は Xvfb と Linux の初心者なので、何が間違っているのかよくわかりません。