1

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 の初心者なので、何が間違っているのかよくわかりません。

4

1 に答える 1

1

これは単純な権限エラーだと思います。

ご覧のとおり、ubuntu apache のホーム ディレクトリでは、/var/www apache がそのホーム ディレクトリへの書き込みアクセス権を持っていることを確認するだけでよいと思います。ubuntu 12.04 での私のデフォルトは

daniel@daniel:/var/www$ ls -la
total 12
drwxr-xr-x  2 root root 4096 Sep 15 11:43 .
drwxr-xr-x 14 root root 4096 Oct  2 08:54 ..
-rw-r--r--  1 root root  177 Sep 15 11:43 index.html

www-dataには、独自のホーム ディレクトリへの書き込みアクセス権がありません。

おそらく、www-data にディレクトリを所有させるか、書き込み権限を持つ管理者グループを作成して追加www-dataすることができますか?

https://superuser.com/questions/19318/how-can-i-give-write-access-of-a-folder-to-all-users-in-linuxへの書き込みアクセス権の付与に関する他のスレッド/var/www

于 2012-10-02T17:36:35.607 に答える