2016-01-20 89 views
1

我正在嘗試使用Xvfb來運行無頭瀏覽器。我沿襲至今
1.安裝xvfb的sudo apt-get install xvfb
2中創建的virtualenv, 3.安裝xvfbwrapper
4.運行下面的代碼如何安裝xvfb並使用python和selenium運行?

import unittest 

from selenium import webdriver 
from xvfbwrapper import Xvfb 


class TestPages(unittest.TestCase): 

    def setUp(self): 
     self.xvfb = Xvfb(width=1280, height=720) 
     self.addCleanup(self.xvfb.stop) 
     self.xvfb.start() 
     self.browser = webdriver.Firefox() 
     self.addCleanup(self.browser.quit) 

    def testUbuntuHomepage(self): 
     self.browser.get('http://www.ubuntu.com') 
     self.assertIn('Ubuntu', self.browser.title) 

    def testGoogleHomepage(self): 
     self.browser.get('http://www.google.com') 
     self.assertIn('Google', self.browser.title) 


if __name__ == '__main__': 
    unittest.main(verbosity=2) 

但我發現了以下錯誤以下過程中,即使我嘗試用sudo安裝,但沒有效果。

Traceback (most recent call last): 
    File "xvfbwrapper.py", line 4, in <module> 
    from xvfbwrapper import Xvfb 
    File "/home/ubuntu/unclescrooz/src/robinhood/xvfbwrapper.py", line 4, in <module> 
    from xvfbwrapper import Xvfb 
ImportError: cannot import name Xvfb 

同樣的問題與pyvirtualdisplay

Traceback (most recent call last): 
    File "pyvirtualdisplay.py", line 1, in <module> 
    from pyvirtualdisplay import Display 
    File "/m4k/projects/scrapper/stock/robinhood/pyvirtualdisplay.py", line 1, in <module> 
    from pyvirtualdisplay import Display 
ImportError: cannot import name Display 

有了下面的代碼

from pyvirtualdisplay import Display 
from selenium import webdriver 

display = Display(visible=0, size=(800, 600)) 
display.start() 

browser = webdriver.Firefox() 
browser.get('http://www.google.com') 
print browser.title 
browser.quit() 

display.stop() 
+0

嘿!我有這個問題。你是如何解決的?乾杯! – zabumba

回答

2

重命名文件xvfbwrapper.pypyvirtualdisplay.py比你導入模塊的名稱別的東西。