1

J'essaie de tester firefox sans tête en utilisant Selenium et le code ci-dessous donne un résultat correct.Test firefox sans tête utilisant du sélénium mais il lance une erreur

From a fresh Ubuntu 14.04 install I did the following 

sudo apt-get install python-pip firefox xvfb 
pip install selenium pyvirtualdisplay 
useradd testuser 
And then in a python shell: 

from selenium import webdriver 
from pyvirtualdisplay import Display 
display = Display(visible=0, size=(800, 600)) 
display.start() 
driver = webdriver.Firefox() 
driver.get("http://askubuntu.com") 
print driver.page_source.encode('utf-8') 
driver.quit() 
display.stop() 

Mais si l'outil la même fonctionnalité en utilisant un class en Django test.py il ne fonctionne pas et lancer une erreur.

class FirefoxHeadlessTestCase(LiveServerTestCase): 
    def setUp(self): 
     # start display 
     self.display = Display(visible=0, size=(1024, 768)) 
     self.display.start() 
     # start browser 
     self.driver = webdriver.Firefox() 

    def tearDown(self): 
     # stop browser 
     self.driver.quit() 
     super(FirefoxHeadlessTestCase, self).tearDown() 

     # stop display 
     self.display.stop() 

    # check if this test should be skipped 

    def test_example(self): 
     # run tests 
     print self.driver.get("http://askubuntu.com").page_source.encode('utf-8') 

Error: print self.driver.get("http://askubuntu.com").page_source.encode('utf-8') AttributeError: 'NoneType' object has no attribute 'page_source'

Toute personne a une idée où je me trompe ici?

Répondre

1

Le problème est avec votre chaînage. Notez que votre code django est légèrement différent

print self.driver.get("http://askubuntu.com").page_source.encode('utf-8') 

de votre autre code python

driver.get("http://askubuntu.com") 
print driver.page_source.encode('utf-8') 

Malheureusement, le pilote méthode get ne retourne rien ne peut donc pas être modifié comme cela se fait dans votre code django. Vous aurez besoin de lignes comme dans votre autre code python.

+0

si 'driver.get (" http://askubuntu.com ")' renvoie tout le contenu html pour lequel le même code dans Django ne retourne rien? Je ne pense pas que le problème enchaîne depuis que j'ai déjà essayé la méthode que vous m'avez suggérée. – python

+0

Selon la documentation, le pilote firefox .get ne renvoie rien. None est ce que vous obtenez et self.driver.get ("http://askubuntu.com") .page_source.encode ('utf-8') est égal à None.page_source.encode ('utf-8') – e4c5

+0

Thank vous, le problème est résolu maintenant – python