我正在尝试使用 Python 的 Selenium 绑定以编程方式与网站交互,作为 Django 网站的一部分。
由于我的 Selenium 代码作为 Django 网站的一部分运行,因此默认情况下(如果我理解正确的话)没有可供浏览器使用的显示。因此,我试图在我的 Selenium 代码运行之前使用 PyVirtualDisplay 启动 Xvfb。
这是我的代码:
from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=False, size=(800, 600))
display.start()
browser = webdriver.Firefox()
当我通过 SSH 连接到我的服务器时(运行 Debian Squeeze、Python 2.6.6、Selenium 2.25、PyVirtualDisplay 0.1.0),以我自己的身份运行 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 有点陌生,所以我不太确定我做错了什么。