2016-01-20 27 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比你导入模块的名称别的东西。