2014-02-27 55 views
0

我有一個Django應用程序,其中一個View函數調用創建Selenium Webdriver的腳本。服務器正在運行CentOS,並且正在運行VNC服務器。Python Selenium指定在Django應用程序中顯示

我收到的錯誤是'錯誤:沒有指定顯示。'如何正確指定啓動此腳本時使用的顯示?我需要使用類似pyvirtualdisplay的東西嗎?

我在Python腳本嘗試這樣做:

import os 
    os.environ['DISPLAY'] = ':3' 

:3是VNC顯示我想在啓動Firefox的實例。

我也試過pyvirtualdisplay:

from pyvirtualdisplay.xvnc import XvncDisplay 
    display = XvncDisplay(rfbport='5903') 
    display.start() 

這導致了同樣的無顯示指定的錯誤。

+1

我沒有看到任何與你在那裏描述的東西有內在的錯誤。你確定你早期設置了'DISPLAY'變量嗎? – Louis

+0

看起來這是一個問題。我將它設置爲低於webdriver的導入。但是,現在我得到'沒有指定協議。錯誤無法打開顯示:3'是否有另一個變量,我必須設置它說vnc? – wohlgejm

+0

谷歌搜索之後「沒有指定協議」,我想你可能會遇到干擾你正在嘗試做的事情的dbus實例。你可以嘗試取消設置環境變量'DBUS_SESSION_BUS_ADDRESS'。 (我遇到過這個問題[之前](https://stackoverflow.com/questions/19879554/how-can-i-make-my-selenium-test-suite-launch-its-firefox-instances-in- xnest-or-x)我自己。) – Louis

回答

0

使用PyVirtualDisplay就像我在我的問題做最後的工作:

from pyvirtualdisplay.xvnc import XvncDisplay 
display = XvncDisplay(rfbport='5903') 
display.start() 

不過,我設置此之前的環境變量,這是搞亂起來。

相關問題