我試圖在Amazon EC2實例上運行Xvfb服務器,然後有一個硒Firefox驅動程序使用虛擬顯示屏保存網站的屏幕截圖。我以前使用PhantomJS,但它無法加載我需要的所有類型的頁面。Xvfb服務器不能在不同的用戶下工作
當我在遠程Amazon EC2實例上的本地用戶上運行它時,該服務器正常工作,但當我嘗試將其作爲「qauser」運行時,我的硒Firefox驅動程序無法連接到虛擬顯示器;它只是當我嘗試初始化webdriver時掛起。如果我嘗試使用虛擬顯示器啓動Firefox,則會顯示「錯誤:嘗試打開個人檔案目錄中的文件時訪問被拒絕。」
如果我su入qauser,然後運行Xvfb和我的應用程序,它工作正常。如果我運行Xvfb作爲qauser,並以自己的用戶身份運行webdriver,它就可以工作。當我將Xvfb和我的應用程序作爲qauser運行時,就會出現問題。有沒有人有任何想法可能是錯誤的?
我的Xvfb服務器,以及創建webdriver的應用程序都使用supervisord運行。配置發佈在這裏:
[program:QaServer]
command = python /opt/corp/qa_tool/main.py
environment = PATH='$PATH:/opt/bin:/usr/local/bin:/usr/bin', DISPLAY='localhost:99'
user = qauser
directory = /home/qauser
priority = 1
stdout_logfile = /opt/corp/qaData/qaTool.log
redirect_stderr = true
[program:Xvfb]
command = Xvfb :99
user = qauser
directory = /home/qauser
priority = 2
stdout_logfile = /opt/corp/qaData/qvfb.log
redirect_stderr = true
我做了一個簡單的測試腳本,作爲qauser運行。 Strace似乎沒有回報任何有用的東西。 http://pastebin.com/SsvHz7F4 – zalpha314